From ad6c3033694e74670d669e492d3b30321643733e Mon Sep 17 00:00:00 2001 From: wangziqi Date: Thu, 9 Jul 2026 11:49:59 +0800 Subject: [PATCH] feat: add Bed and Locker entities with Room FK --- apps/server/src/entities/bed.entity.ts | 38 +++++++++++++++++++++++ apps/server/src/entities/locker.entity.ts | 38 +++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 apps/server/src/entities/bed.entity.ts create mode 100644 apps/server/src/entities/locker.entity.ts diff --git a/apps/server/src/entities/bed.entity.ts b/apps/server/src/entities/bed.entity.ts new file mode 100644 index 00000000..1fddf39c --- /dev/null +++ b/apps/server/src/entities/bed.entity.ts @@ -0,0 +1,38 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + ManyToOne, + JoinColumn, +} from 'typeorm'; +import { Room } from './room.entity'; + +@Entity('beds') +export class Bed { + @PrimaryGeneratedColumn() + id: number; + + @Column({ name: 'room_id' }) + roomId: number; + + @ManyToOne(() => Room, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'room_id' }) + room: Room; + + @Column({ name: 'bed_number', length: 20 }) + bedNumber: string; + + @Column({ type: 'varchar', length: 20, default: 'available' }) + status: string; + + @Column({ type: 'text', nullable: true }) + notes: string; + + @CreateDateColumn({ name: 'created_at' }) + createdAt: Date; + + @UpdateDateColumn({ name: 'updated_at' }) + updatedAt: Date; +} diff --git a/apps/server/src/entities/locker.entity.ts b/apps/server/src/entities/locker.entity.ts new file mode 100644 index 00000000..8af69fd5 --- /dev/null +++ b/apps/server/src/entities/locker.entity.ts @@ -0,0 +1,38 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + ManyToOne, + JoinColumn, +} from 'typeorm'; +import { Room } from './room.entity'; + +@Entity('lockers') +export class Locker { + @PrimaryGeneratedColumn() + id: number; + + @Column({ name: 'room_id' }) + roomId: number; + + @ManyToOne(() => Room, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'room_id' }) + room: Room; + + @Column({ name: 'locker_number', length: 20 }) + lockerNumber: string; + + @Column({ type: 'varchar', length: 20, default: 'available' }) + status: string; + + @Column({ type: 'text', nullable: true }) + notes: string; + + @CreateDateColumn({ name: 'created_at' }) + createdAt: Date; + + @UpdateDateColumn({ name: 'updated_at' }) + updatedAt: Date; +}