| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn } from 'typeorm';
- import { UserEntity } from '@/server/modules/users/user.entity';
- import process from 'node:process';
- @Entity('file')
- export class File {
- @PrimaryGeneratedColumn({ name: 'id', type: 'int', unsigned: true })
- id!: number;
- @Column({ name: 'name', type: 'varchar', length: 255 })
- name!: string;
- @Column({ name: 'type', type: 'varchar', length: 50, nullable: true, comment: '文件类型' })
- type!: string | null;
- @Column({ name: 'size', type: 'int', unsigned: true, nullable: true, comment: '文件大小,单位字节' })
- size!: number | null;
- @Column({ name: 'path', type: 'varchar', length: 512, comment: '文件存储路径' })
- path!: string;
- // 获取完整的文件URL(包含MINIO_HOST前缀)
- get fullUrl(): string {
- const protocol = process.env.MINIO_USE_SSL !== 'false' ? 'https' : 'http';
- const port = process.env.MINIO_PORT ? `:${process.env.MINIO_PORT}` : '';
- const host = process.env.MINIO_HOST || 'localhost';
- const bucketName = process.env.MINIO_BUCKET_NAME || 'd8dai';
- return `${protocol}://${host}${port}/${bucketName}/${this.path}`;
- }
- @Column({ name: 'description', type: 'text', nullable: true, comment: '文件描述' })
- description!: string | null;
- @Column({ name: 'upload_user_id', type: 'int', unsigned: true })
- uploadUserId!: number;
- @ManyToOne(() => UserEntity)
- @JoinColumn({ name: 'upload_user_id', referencedColumnName: 'id' })
- uploadUser!: UserEntity;
- @Column({ name: 'upload_time', type: 'datetime' })
- uploadTime!: Date;
- @Column({ name: 'last_updated', type: 'datetime', nullable: true, comment: '最后更新时间' })
- lastUpdated!: Date | null;
- @Column({ name: 'created_at', type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
- createdAt!: Date;
- @Column({
- name: 'updated_at',
- type: 'timestamp',
- default: () => 'CURRENT_TIMESTAMP',
- onUpdate: 'CURRENT_TIMESTAMP'
- })
- updatedAt!: Date;
- }
|