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[]; }