Add Booking System

This commit is contained in:
nocnico
2025-09-18 21:49:03 +02:00
parent 715cb9ef53
commit a612cf9951
14 changed files with 1380 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
enum BOOKING_TYPE {
STATION
LST_01
LST_02
LST_03
LST_04
}
model Booking {
id String @id @default(uuid())
userId String @map(name: "user_id")
type BOOKING_TYPE
stationId Int? @map(name: "station_id")
startTime DateTime @map(name: "start_time")
endTime DateTime @map(name: "end_time")
createdAt DateTime @default(now()) @map(name: "created_at")
updatedAt DateTime @updatedAt @map(name: "updated_at")
// Relations
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
station Station? @relation(fields: [stationId], references: [id], onDelete: Cascade)
@@index([startTime, endTime])
@@index([type, startTime, endTime])
@@map(name: "bookings")
}

View File

@@ -0,0 +1,28 @@
-- CreateEnum
CREATE TYPE "BOOKING_TYPE" AS ENUM ('STATION', 'LST_01', 'LST_02', 'LST_03', 'LST_04');
-- CreateTable
CREATE TABLE "bookings" (
"id" TEXT NOT NULL,
"user_id" TEXT NOT NULL,
"type" "BOOKING_TYPE" NOT NULL,
"station_id" INTEGER,
"start_time" TIMESTAMP(3) NOT NULL,
"end_time" TIMESTAMP(3) NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "bookings_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "bookings_start_time_end_time_idx" ON "bookings"("start_time", "end_time");
-- CreateIndex
CREATE INDEX "bookings_type_start_time_end_time_idx" ON "bookings"("type", "start_time", "end_time");
-- AddForeignKey
ALTER TABLE "bookings" ADD CONSTRAINT "bookings_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "bookings" ADD CONSTRAINT "bookings_station_id_fkey" FOREIGN KEY ("station_id") REFERENCES "Station"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -41,4 +41,5 @@ model Station {
MissionsOnStations MissionsOnStations[]
MissionOnStationUsers MissionOnStationUsers[]
ConnectedAircraft ConnectedAircraft[]
Bookings Booking[]
}

View File

@@ -76,6 +76,7 @@ model User {
PositionLog PositionLog[]
Penaltys Penalty[]
CreatedPenalties Penalty[] @relation("CreatedPenalties")
Bookings Booking[]
@@map(name: "users")
}