feat(schedule): add series and exception entities
This commit is contained in:
74
src/entity/schedule_exceptions.ts
Normal file
74
src/entity/schedule_exceptions.ts
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
|
||||||
|
import { ScheduleSeries } from "./schedule_series";
|
||||||
|
import { User } from "./users";
|
||||||
|
import { Room } from "./room";
|
||||||
|
|
||||||
|
@Entity("schedule_exceptions")
|
||||||
|
export class ScheduleException {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ type: "uuid" })
|
||||||
|
series_id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => ScheduleSeries, { onDelete: "CASCADE" })
|
||||||
|
@JoinColumn({ name: "series_id" })
|
||||||
|
series: ScheduleSeries;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: false })
|
||||||
|
occurrence_date: Date;
|
||||||
|
|
||||||
|
@Column({ type: "boolean", default: false })
|
||||||
|
is_cancelled: boolean;
|
||||||
|
|
||||||
|
@Column({ type: "uuid", nullable: true })
|
||||||
|
override_room_id: string;
|
||||||
|
|
||||||
|
@Column({ type: "uuid", nullable: true })
|
||||||
|
override_doctor_id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "SET NULL", nullable: true })
|
||||||
|
@JoinColumn({ name: "override_room_id" })
|
||||||
|
override_room: Room;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "SET NULL", nullable: true })
|
||||||
|
@JoinColumn({ name: "override_doctor_id" })
|
||||||
|
override_doctor: User;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
override_title: string;
|
||||||
|
|
||||||
|
@Column({ type: "timestamptz", nullable: true })
|
||||||
|
override_start_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "timestamptz", nullable: true })
|
||||||
|
override_end_at: Date;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
created_by: string;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
updated_by: string;
|
||||||
|
|
||||||
|
@DeleteDateColumn({ nullable: true })
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
deleted_by: string;
|
||||||
|
}
|
||||||
80
src/entity/schedule_series.ts
Normal file
80
src/entity/schedule_series.ts
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
|
||||||
|
import { Status } from "../types/status";
|
||||||
|
import { User } from "./users";
|
||||||
|
import { Room } from "./room";
|
||||||
|
|
||||||
|
@Entity("schedule_series")
|
||||||
|
export class ScheduleSeries {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ type: "uuid" })
|
||||||
|
room_id: string;
|
||||||
|
|
||||||
|
@Column({ type: "uuid" })
|
||||||
|
doctor_id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn({ name: "room_id" })
|
||||||
|
room: Room;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn({ name: "doctor_id" })
|
||||||
|
doctor: User;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 256 })
|
||||||
|
title: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 64 })
|
||||||
|
timezone: string;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: false })
|
||||||
|
start_date: Date;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: true })
|
||||||
|
until_date: Date;
|
||||||
|
|
||||||
|
@Column({ type: "time", nullable: false })
|
||||||
|
start_time_local: string;
|
||||||
|
|
||||||
|
@Column({ type: "time", nullable: false })
|
||||||
|
end_time_local: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, type: "text" })
|
||||||
|
recurrence_rule: string;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: Status,
|
||||||
|
default: Status.Active,
|
||||||
|
})
|
||||||
|
status: Status;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
created_by: string;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
updated_by: string;
|
||||||
|
|
||||||
|
@DeleteDateColumn({ nullable: true })
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
deleted_by: string;
|
||||||
|
}
|
||||||
@ -20,6 +20,8 @@ export * from "../entity/service_fare"
|
|||||||
export * from "../entity/service_package"
|
export * from "../entity/service_package"
|
||||||
export * from "../entity/department"
|
export * from "../entity/department"
|
||||||
export * from "../entity/doctor_schedule"
|
export * from "../entity/doctor_schedule"
|
||||||
|
export * from "../entity/schedule_series"
|
||||||
|
export * from "../entity/schedule_exceptions"
|
||||||
export * from "../entity/doctor_item"
|
export * from "../entity/doctor_item"
|
||||||
export * from "../entity/doctor_item_package"
|
export * from "../entity/doctor_item_package"
|
||||||
export * from "../entity/measurement_unit"
|
export * from "../entity/measurement_unit"
|
||||||
|
|||||||
Reference in New Issue
Block a user