timetable-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 099a0fc35216995f4c7a4bdd97bc651ce4aef43f
parent 407260f658f887486f31face789212f0f9b9c39d
Author: Yuukin256 <Yuukin256@gmail.com>
Date:   Fri,  4 Nov 2022 22:23:52 +0900

データベーススキーマ変更

Diffstat:
Dsrc/prisma/migrations/20221101152436_/migration.sql | 57---------------------------------------------------------
Asrc/prisma/migrations/20221104132254_init/migration.sql | 102+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/prisma/schema.prisma | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
3 files changed, 163 insertions(+), 77 deletions(-)

diff --git a/src/prisma/migrations/20221101152436_/migration.sql b/src/prisma/migrations/20221101152436_/migration.sql @@ -1,57 +0,0 @@ --- CreateEnum -CREATE TYPE "AbstractLessonName" AS ENUM ('Mon1', 'Mon2', 'Mon3', 'Mon4', 'Mon5', 'Mon6', 'Mon7', 'Tue1', 'Tue2', 'Tue3', 'Tue4', 'Tue5', 'Tue6', 'Tue7', 'Wed1', 'Wed2', 'Wed3', 'Wed4', 'Wed5', 'Wed6', 'Wed7', 'Thu1', 'Thu2', 'Thu3', 'Thu4', 'Thu5', 'Thu6', 'Fri1', 'Fri2', 'Fri3', 'Fri4', 'Fri5', 'Fri6', 'Fri7'); - --- CreateTable -CREATE TABLE "SchoolGrade" ( - "grade" INTEGER NOT NULL, - - CONSTRAINT "SchoolGrade_pkey" PRIMARY KEY ("grade") -); - --- CreateTable -CREATE TABLE "SchoolClass" ( - "id" INTEGER NOT NULL, - "class" INTEGER NOT NULL, - "grade" INTEGER NOT NULL, - - CONSTRAINT "SchoolClass_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ClassUnit" ( - "id" SERIAL NOT NULL, - "schoolClassId" INTEGER NOT NULL, - "abstractLessonName" "AbstractLessonName" NOT NULL, - "subject" TEXT[], - - CONSTRAINT "ClassUnit_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "DateAndSchoolTime" ( - "id" SERIAL NOT NULL, - "schoolGradeNumber" INTEGER NOT NULL, - "date" DATE NOT NULL, - "schoolTime" INTEGER NOT NULL, - "abstractLessonName" "AbstractLessonName" NOT NULL, - - CONSTRAINT "DateAndSchoolTime_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "SchoolClass_grade_class_key" ON "SchoolClass"("grade", "class"); - --- CreateIndex -CREATE UNIQUE INDEX "ClassUnit_schoolClassId_abstractLessonName_key" ON "ClassUnit"("schoolClassId", "abstractLessonName"); - --- CreateIndex -CREATE UNIQUE INDEX "DateAndSchoolTime_schoolGradeNumber_date_schoolTime_key" ON "DateAndSchoolTime"("schoolGradeNumber", "date", "schoolTime"); - --- AddForeignKey -ALTER TABLE "SchoolClass" ADD CONSTRAINT "SchoolClass_grade_fkey" FOREIGN KEY ("grade") REFERENCES "SchoolGrade"("grade") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "ClassUnit" ADD CONSTRAINT "ClassUnit_schoolClassId_fkey" FOREIGN KEY ("schoolClassId") REFERENCES "SchoolClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "DateAndSchoolTime" ADD CONSTRAINT "DateAndSchoolTime_schoolGradeNumber_fkey" FOREIGN KEY ("schoolGradeNumber") REFERENCES "SchoolGrade"("grade") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/src/prisma/migrations/20221104132254_init/migration.sql b/src/prisma/migrations/20221104132254_init/migration.sql @@ -0,0 +1,102 @@ +-- CreateEnum +CREATE TYPE "AbstractLessonName" AS ENUM ('Mon1', 'Mon2', 'Mon3', 'Mon4', 'Mon5', 'Mon6', 'Mon7', 'Tue1', 'Tue2', 'Tue3', 'Tue4', 'Tue5', 'Tue6', 'Tue7', 'Wed1', 'Wed2', 'Wed3', 'Wed4', 'Wed5', 'Wed6', 'Wed7', 'Thu1', 'Thu2', 'Thu3', 'Thu4', 'Thu5', 'Thu6', 'Fri1', 'Fri2', 'Fri3', 'Fri4', 'Fri5', 'Fri6', 'Fri7'); + +-- CreateTable +CREATE TABLE "SchoolGrade" ( + "grade" INTEGER NOT NULL, + + CONSTRAINT "SchoolGrade_pkey" PRIMARY KEY ("grade") +); + +-- CreateTable +CREATE TABLE "SchoolClass" ( + "id" INTEGER NOT NULL, + "class" INTEGER NOT NULL, + "grade" INTEGER NOT NULL, + + CONSTRAINT "SchoolClass_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Standard" ( + "classId" INTEGER NOT NULL, + "Mon1" TEXT[], + "Mon2" TEXT[], + "Mon3" TEXT[], + "Mon4" TEXT[], + "Mon5" TEXT[], + "Mon6" TEXT[], + "Mon7" TEXT[], + "Tue1" TEXT[], + "Tue2" TEXT[], + "Tue3" TEXT[], + "Tue4" TEXT[], + "Tue5" TEXT[], + "Tue6" TEXT[], + "Tue7" TEXT[], + "Wed1" TEXT[], + "Wed2" TEXT[], + "Wed3" TEXT[], + "Wed4" TEXT[], + "Wed5" TEXT[], + "Wed6" TEXT[], + "Wed7" TEXT[], + "Thu1" TEXT[], + "Thu2" TEXT[], + "Thu3" TEXT[], + "Thu4" TEXT[], + "Thu5" TEXT[], + "Thu6" TEXT[], + "Fri1" TEXT[], + "Fri2" TEXT[], + "Fri3" TEXT[], + "Fri4" TEXT[], + "Fri5" TEXT[], + "Fri6" TEXT[], + "Fri7" TEXT[], + + CONSTRAINT "Standard_pkey" PRIMARY KEY ("classId") +); + +-- CreateTable +CREATE TABLE "AbstractTimetableUnit" ( + "id" SERIAL NOT NULL, + "grade" INTEGER NOT NULL, + "date" DATE NOT NULL, + "schoolTime" INTEGER NOT NULL, + "abstractLessonName" "AbstractLessonName" NOT NULL, + + CONSTRAINT "AbstractTimetableUnit_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "UnusualChange" ( + "id" SERIAL NOT NULL, + "classId" INTEGER NOT NULL, + "date" DATE NOT NULL, + "schoolTime" INTEGER NOT NULL, + "lessonName" TEXT[], + + CONSTRAINT "UnusualChange_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "SchoolClass_grade_class_key" ON "SchoolClass"("grade", "class"); + +-- CreateIndex +CREATE UNIQUE INDEX "AbstractTimetableUnit_grade_date_schoolTime_key" ON "AbstractTimetableUnit"("grade", "date", "schoolTime"); + +-- CreateIndex +CREATE UNIQUE INDEX "UnusualChange_classId_date_schoolTime_key" ON "UnusualChange"("classId", "date", "schoolTime"); + +-- AddForeignKey +ALTER TABLE "SchoolClass" ADD CONSTRAINT "SchoolClass_grade_fkey" FOREIGN KEY ("grade") REFERENCES "SchoolGrade"("grade") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Standard" ADD CONSTRAINT "Standard_classId_fkey" FOREIGN KEY ("classId") REFERENCES "SchoolClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "AbstractTimetableUnit" ADD CONSTRAINT "AbstractTimetableUnit_grade_fkey" FOREIGN KEY ("grade") REFERENCES "SchoolGrade"("grade") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "UnusualChange" ADD CONSTRAINT "UnusualChange_classId_fkey" FOREIGN KEY ("classId") REFERENCES "SchoolClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/src/prisma/schema.prisma b/src/prisma/schema.prisma @@ -11,40 +11,81 @@ datasource db { } model SchoolGrade { - grade Int @id - SchoolClass SchoolClass[] - DateAndSchoolTime DateAndSchoolTime[] + grade Int @id + SchoolClass SchoolClass[] + AbstractTimetableUnit AbstractTimetableUnit[] } model SchoolClass { - id Int @id - SchoolGrade SchoolGrade @relation(fields: [grade], references: [grade]) - class Int - ClassUnit ClassUnit[] - grade Int + id Int @id + SchoolGrade SchoolGrade @relation(fields: [grade], references: [grade]) + class Int + grade Int + Standard Standard? + UnusualTimetableUnit UnusualChange[] @@unique([grade, class]) } -model ClassUnit { - id Int @id @default(autoincrement()) - SchoolClass SchoolClass @relation(fields: [schoolClassId], references: [id]) - schoolClassId Int - abstractLessonName AbstractLessonName - subject String[] - - @@unique([schoolClassId, abstractLessonName]) +model Standard { + classId Int @id + class SchoolClass @relation(fields: [classId], references: [id]) + Mon1 String[] + Mon2 String[] + Mon3 String[] + Mon4 String[] + Mon5 String[] + Mon6 String[] + Mon7 String[] + Tue1 String[] + Tue2 String[] + Tue3 String[] + Tue4 String[] + Tue5 String[] + Tue6 String[] + Tue7 String[] + Wed1 String[] + Wed2 String[] + Wed3 String[] + Wed4 String[] + Wed5 String[] + Wed6 String[] + Wed7 String[] + Thu1 String[] + Thu2 String[] + Thu3 String[] + Thu4 String[] + Thu5 String[] + Thu6 String[] + Fri1 String[] + Fri2 String[] + Fri3 String[] + Fri4 String[] + Fri5 String[] + Fri6 String[] + Fri7 String[] } -model DateAndSchoolTime { +model AbstractTimetableUnit { id Int @id @default(autoincrement()) - schoolGrade SchoolGrade @relation(fields: [schoolGradeNumber], references: [grade]) - schoolGradeNumber Int + SchoolGrade SchoolGrade @relation(fields: [grade], references: [grade]) + grade Int date DateTime @db.Date schoolTime Int abstractLessonName AbstractLessonName - @@unique([schoolGradeNumber, date, schoolTime]) + @@unique([grade, date, schoolTime]) +} + +model UnusualChange { + id Int @id @default(autoincrement()) + class SchoolClass @relation(fields: [classId], references: [id]) + classId Int + date DateTime @db.Date + schoolTime Int + lessonName String[] + + @@unique([classId, date, schoolTime]) } enum AbstractLessonName {