import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, OneToMany, } from 'typeorm'; import { AssetType, AssetStatus } from '../common/enums'; import { Group } from './group.entity'; import { AssetLog } from './asset-log.entity'; @Entity('assets') export class Asset { @PrimaryGeneratedColumn('uuid') id: string; @Column() groupId: string; @ManyToOne(() => Group, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'groupId' }) group: Group; @Column({ type: 'enum', enum: AssetType }) type: AssetType; @Column({ length: 100 }) name: string; @Column({ type: 'text', nullable: true, comment: '描述' }) description: string; @Column({ type: 'text', nullable: true, comment: '加密的账号凭据' }) accountCredentials?: string | null; @Column({ default: 1, comment: '数量(用于物品)' }) quantity: number; @Column({ type: 'enum', enum: AssetStatus, default: AssetStatus.AVAILABLE, }) status: AssetStatus; @Column({ type: 'varchar', nullable: true, comment: '当前借用人ID' }) currentBorrowerId?: string | null; @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date; @OneToMany(() => AssetLog, (log) => log.asset) logs: AssetLog[]; }