feature: users with treatment edit permission should now have working hours defined. the appointment grid is now being drawn based on the doctor's working hours.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "staff_working_hours_schedules" (
|
||||
"id" TEXT NOT NULL,
|
||||
"membershipId" TEXT NOT NULL,
|
||||
"autoRepeatWeekly" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "staff_working_hours_schedules_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "staff_working_hours_blocks" (
|
||||
"id" TEXT NOT NULL,
|
||||
"scheduleId" TEXT NOT NULL,
|
||||
"dayOfWeek" INTEGER NOT NULL,
|
||||
"startMinute" INTEGER NOT NULL,
|
||||
"endMinute" INTEGER NOT NULL,
|
||||
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
||||
|
||||
CONSTRAINT "staff_working_hours_blocks_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "staff_working_hours_schedules_membershipId_key" ON "staff_working_hours_schedules"("membershipId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "staff_working_hours_blocks_scheduleId_dayOfWeek_sortOrder_idx" ON "staff_working_hours_blocks"("scheduleId", "dayOfWeek", "sortOrder");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "staff_working_hours_schedules" ADD CONSTRAINT "staff_working_hours_schedules_membershipId_fkey" FOREIGN KEY ("membershipId") REFERENCES "memberships"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "staff_working_hours_blocks" ADD CONSTRAINT "staff_working_hours_blocks_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "staff_working_hours_schedules"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@@ -217,6 +217,7 @@ model Membership {
|
||||
|
||||
permissions MembershipPermission[]
|
||||
invitations StaffInvitation[]
|
||||
workingHoursSchedule StaffWorkingHoursSchedule?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -225,6 +226,34 @@ model Membership {
|
||||
@@map("memberships")
|
||||
}
|
||||
|
||||
model StaffWorkingHoursSchedule {
|
||||
id String @id @default(uuid())
|
||||
membershipId String @unique
|
||||
autoRepeatWeekly Boolean @default(true)
|
||||
|
||||
membership Membership @relation(fields: [membershipId], references: [id], onDelete: Cascade)
|
||||
blocks StaffWorkingHoursBlock[]
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@map("staff_working_hours_schedules")
|
||||
}
|
||||
|
||||
model StaffWorkingHoursBlock {
|
||||
id String @id @default(uuid())
|
||||
scheduleId String
|
||||
dayOfWeek Int
|
||||
startMinute Int
|
||||
endMinute Int
|
||||
sortOrder Int @default(0)
|
||||
|
||||
schedule StaffWorkingHoursSchedule @relation(fields: [scheduleId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([scheduleId, dayOfWeek, sortOrder])
|
||||
@@map("staff_working_hours_blocks")
|
||||
}
|
||||
|
||||
model StaffInvitation {
|
||||
id String @id @default(uuid())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user