diff --git a/prisma/migrations/20231121035607_added_tables/migration.sql b/prisma/migrations/20231121035607_added_tables/migration.sql new file mode 100644 index 0000000000000000000000000000000000000000..c9c0006c9c67286a7a8f92f2077c79f898cb7cff --- /dev/null +++ b/prisma/migrations/20231121035607_added_tables/migration.sql @@ -0,0 +1,147 @@ +-- CreateTable +CREATE TABLE "User" ( + "idUser" SERIAL NOT NULL, + "username" TEXT NOT NULL, + "password" TEXT NOT NULL, + "status" TEXT NOT NULL, + + CONSTRAINT "User_pkey" PRIMARY KEY ("idUser") +); + +-- CreateTable +CREATE TABLE "Student" ( + "idStudent" SERIAL NOT NULL, + "namaSiswa" TEXT NOT NULL, + "kelasSiswa" INTEGER NOT NULL, + "umurSiswaa" INTEGER NOT NULL, + "noTelpSiswa" TEXT NOT NULL, + "alamatSiswa" TEXT NOT NULL, + + CONSTRAINT "Student_pkey" PRIMARY KEY ("idStudent") +); + +-- CreateTable +CREATE TABLE "VehicleType" ( + "idKen" SERIAL NOT NULL, + "namaKen" TEXT NOT NULL, + "jenisKen" TEXT NOT NULL, + + CONSTRAINT "VehicleType_pkey" PRIMARY KEY ("idKen") +); + +-- CreateTable +CREATE TABLE "DrivingClass" ( + "idClass" SERIAL NOT NULL, + "namaKelas" TEXT NOT NULL, + "hargaKelas" INTEGER NOT NULL, + "totalJam" INTEGER NOT NULL, + "jmlSesi" INTEGER NOT NULL, + "idKendaraan" INTEGER NOT NULL, + + CONSTRAINT "DrivingClass_pkey" PRIMARY KEY ("idClass") +); + +-- CreateTable +CREATE TABLE "Vehicle" ( + "platKen" TEXT NOT NULL DEFAULT 'X XXX XX', + "lastService" TIMESTAMP(3) NOT NULL, + "jmlKm" INTEGER NOT NULL, + "statusKen" TEXT NOT NULL, + "idKendaraan" INTEGER NOT NULL, + + CONSTRAINT "Vehicle_pkey" PRIMARY KEY ("platKen") +); + +-- CreateTable +CREATE TABLE "Schedule" ( + "idJadwal" SERIAL NOT NULL, + "hari" TEXT NOT NULL, + "sesi" INTEGER NOT NULL, + "jamMulai" TIMESTAMP NOT NULL, + "jamSelesai" TIMESTAMP NOT NULL, + + CONSTRAINT "Schedule_pkey" PRIMARY KEY ("idJadwal") +); + +-- CreateTable +CREATE TABLE "Instructor" ( + "idInstruktur" SERIAL NOT NULL, + "namaIns" TEXT NOT NULL, + "nikIns" TEXT NOT NULL, + "alamatIns" TEXT NOT NULL, + "noTelpIns" TEXT NOT NULL, + "noRekIns" TEXT NOT NULL, + + CONSTRAINT "Instructor_pkey" PRIMARY KEY ("idInstruktur") +); + +-- CreateTable +CREATE TABLE "InstructorClass" ( + "idInstruktur" INTEGER NOT NULL, + "idClass" INTEGER NOT NULL, + + CONSTRAINT "InstructorClass_pkey" PRIMARY KEY ("idInstruktur","idClass") +); + +-- CreateTable +CREATE TABLE "InstructorSched" ( + "idInstruktur" INTEGER NOT NULL, + "idJadwal" INTEGER NOT NULL, + + CONSTRAINT "InstructorSched_pkey" PRIMARY KEY ("idInstruktur","idJadwal") +); + +-- CreateTable +CREATE TABLE "StudentSched" ( + "idStudent" INTEGER NOT NULL, + "idJadwal" INTEGER NOT NULL, + + CONSTRAINT "StudentSched_pkey" PRIMARY KEY ("idStudent","idJadwal") +); + +-- CreateTable +CREATE TABLE "VehicleSched" ( + "platKen" TEXT NOT NULL, + "idJadwal" INTEGER NOT NULL, + + CONSTRAINT "VehicleSched_pkey" PRIMARY KEY ("platKen","idJadwal") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "DrivingClass_namaKelas_key" ON "DrivingClass"("namaKelas"); + +-- CreateIndex +CREATE UNIQUE INDEX "Instructor_nikIns_key" ON "Instructor"("nikIns"); + +-- AddForeignKey +ALTER TABLE "DrivingClass" ADD CONSTRAINT "DrivingClass_idKendaraan_fkey" FOREIGN KEY ("idKendaraan") REFERENCES "VehicleType"("idKen") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Vehicle" ADD CONSTRAINT "Vehicle_idKendaraan_fkey" FOREIGN KEY ("idKendaraan") REFERENCES "VehicleType"("idKen") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "InstructorClass" ADD CONSTRAINT "InstructorClass_idInstruktur_fkey" FOREIGN KEY ("idInstruktur") REFERENCES "Instructor"("idInstruktur") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "InstructorClass" ADD CONSTRAINT "InstructorClass_idClass_fkey" FOREIGN KEY ("idClass") REFERENCES "DrivingClass"("idClass") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "InstructorSched" ADD CONSTRAINT "InstructorSched_idInstruktur_fkey" FOREIGN KEY ("idInstruktur") REFERENCES "Instructor"("idInstruktur") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "InstructorSched" ADD CONSTRAINT "InstructorSched_idJadwal_fkey" FOREIGN KEY ("idJadwal") REFERENCES "Schedule"("idJadwal") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "StudentSched" ADD CONSTRAINT "StudentSched_idStudent_fkey" FOREIGN KEY ("idStudent") REFERENCES "Student"("idStudent") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "StudentSched" ADD CONSTRAINT "StudentSched_idJadwal_fkey" FOREIGN KEY ("idJadwal") REFERENCES "Schedule"("idJadwal") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "VehicleSched" ADD CONSTRAINT "VehicleSched_platKen_fkey" FOREIGN KEY ("platKen") REFERENCES "Vehicle"("platKen") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "VehicleSched" ADD CONSTRAINT "VehicleSched_idJadwal_fkey" FOREIGN KEY ("idJadwal") REFERENCES "Schedule"("idJadwal") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000000000000000000000000000000000000..fbffa92c2bb7c748d6fc78f9f9dcac604dabb87d --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 64b09b7280d011a6691acef763470470625d1427..8055ecee520ef6d2a7ec029670a26152b4456a62 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,18 +10,106 @@ datasource db { url = env("DATABASE_URL") } -model User{ - idUser Int @id @default(autoincrement()) - username String +model User { + idUser Int @id @default(autoincrement()) + username String @unique password String - status String + status String } -model Student{ - idStudent Int @id @default(autoincrement()) - namaSiswa String - kelasSiswa Int - umurSiswaa Int - noTelpSiswa String - alamatSiswa String +model Student { + idStudent Int @id @default(autoincrement()) + namaSiswa String + kelasSiswa Int + umurSiswaa Int + noTelpSiswa String + alamatSiswa String + studentSched StudentSched[] +} + +model VehicleType { + idKen Int @id @default(autoincrement()) + namaKen String + jenisKen String + DrivingClass DrivingClass[] + Vehicle Vehicle[] +} + +model DrivingClass { + idClass Int @id @default(autoincrement()) + namaKelas String @unique + hargaKelas Int + totalJam Int + jmlSesi Int + vehicleType VehicleType @relation(fields: [idKendaraan], references: [idKen]) + idKendaraan Int + instructorClass InstructorClass[] +} + +model Vehicle { + platKen String @id @default("X XXX XX") + lastService DateTime + jmlKm Int + statusKen String + vehicleType VehicleType @relation(fields: [idKendaraan], references: [idKen]) + idKendaraan Int + vehicleSched VehicleSched[] +} + +model Schedule { + idJadwal Int @id @default(autoincrement()) + hari String + sesi Int + jamMulai DateTime @db.Timestamp() + jamSelesai DateTime @db.Timestamp() + instructorSched InstructorSched[] + studentSched StudentSched[] + vehicleSched VehicleSched[] +} + +model Instructor { + idInstruktur Int @id @default(autoincrement()) + namaIns String + nikIns String @unique + alamatIns String + noTelpIns String + noRekIns String + instructorClass InstructorClass[] + instructorSched InstructorSched[] +} + +model InstructorClass { + instructor Instructor @relation(fields: [idInstruktur], references: [idInstruktur]) + idInstruktur Int + drivingClass DrivingClass @relation(fields: [idClass], references: [idClass]) + idClass Int + + @@id([idInstruktur, idClass]) +} + +model InstructorSched { + instructor Instructor @relation(fields: [idInstruktur], references: [idInstruktur]) + idInstruktur Int + schedule Schedule @relation(fields: [idJadwal], references: [idJadwal]) + idJadwal Int + + @@id([idInstruktur, idJadwal]) +} + +model StudentSched { + student Student @relation(fields: [idStudent], references: [idStudent]) + idStudent Int + schedule Schedule @relation(fields: [idJadwal], references: [idJadwal]) + idJadwal Int + + @@id([idStudent, idJadwal]) +} + +model VehicleSched { + vehicle Vehicle @relation(fields: [platKen], references: [platKen]) + platKen String + schedule Schedule @relation(fields: [idJadwal], references: [idJadwal]) + idJadwal Int + + @@id([platKen, idJadwal]) }