Files
gamegroup/src/entities/asset.entity.ts

61 lines
1.3 KiB
TypeScript
Raw Normal View History

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