diff --git a/src/entity/doctor_favorite_item.ts b/src/entity/doctor_favorite_item.ts new file mode 100644 index 0000000..db37746 --- /dev/null +++ b/src/entity/doctor_favorite_item.ts @@ -0,0 +1,41 @@ +import { + Entity, + PrimaryGeneratedColumn, + ManyToOne, + JoinColumn, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + Column, + Index, +} from "typeorm"; + +import { User } from "./users"; +import { ItemMaster } from "./pharmacy/item_master"; + +@Entity("doctor_favorite_item") +@Index(["doctor", "item_master"], { unique: true }) +export class DoctorFavoriteItem { + @PrimaryGeneratedColumn("uuid") + id!: string; + + @ManyToOne(() => User, { nullable: false, onDelete: "CASCADE" }) + @JoinColumn({ name: "doctor_id" }) + doctor!: User; + + @ManyToOne(() => ItemMaster, { nullable: false, onDelete: "CASCADE" }) + @JoinColumn({ name: "item_master_id" }) + item_master!: ItemMaster; + + @CreateDateColumn() + created_at!: Date; + + @Column({ nullable: true, length: 256 }) + created_by?: string; + + @UpdateDateColumn({ nullable: true }) + updated_at?: Date; + + @Column({ nullable: true, length: 256 }) + updated_by?: string; +} diff --git a/src/entity/doctor_item_package.ts b/src/entity/doctor_item_package.ts new file mode 100644 index 0000000..722cde4 --- /dev/null +++ b/src/entity/doctor_item_package.ts @@ -0,0 +1,56 @@ +import { + Entity, + PrimaryGeneratedColumn, + ManyToOne, + JoinColumn, + ManyToMany, + JoinTable, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + Column, + Index, +} from "typeorm"; + +import { User } from "./users"; +import { ItemMaster } from "./pharmacy/item_master"; + +@Entity("doctor_item_package") +@Index(["doctor", "name"], { unique: true }) +export class DoctorItemPackage { + @PrimaryGeneratedColumn("uuid") + id!: string; + + @ManyToOne(() => User, { nullable: false, onDelete: "CASCADE" }) + @JoinColumn({ name: "doctor_id" }) + doctor!: User; + + @Column({ type: "text", nullable: false }) + name!: string; + + @Column({ type: "text", nullable: true }) + description?: string; + + @ManyToMany(() => ItemMaster) + @JoinTable({ + name: "doctor_item_package_items", + joinColumn: { name: "doctor_item_package_id", referencedColumnName: "id" }, + inverseJoinColumn: { name: "item_master_id", referencedColumnName: "id" }, + }) + items!: ItemMaster[]; + + @Column({ type: "boolean", default: true }) + active!: boolean; + + @CreateDateColumn() + created_at!: Date; + + @Column({ nullable: true, length: 256 }) + created_by?: string; + + @UpdateDateColumn({ nullable: true }) + updated_at?: Date; + + @Column({ nullable: true, length: 256 }) + updated_by?: string; +} diff --git a/src/schema/public.ts b/src/schema/public.ts index 3c84b9a..18655b7 100644 --- a/src/schema/public.ts +++ b/src/schema/public.ts @@ -20,6 +20,8 @@ export * from "../entity/service_fare" export * from "../entity/service_package" export * from "../entity/department" export * from "../entity/doctor_schedule" +export * from "../entity/doctor_favorite_item" +export * from "../entity/doctor_item_package" export * from "../entity/measurement_unit" export * from "../entity/reference_range" export * from "../entity/queue_monitoring"