feat: Equipment-System, Buchungsbearbeitung, Kundenadresse, LexOffice-Fix
- Vintage Modell hinzugefuegt - Equipment Multi-Select (Neue Buchung + Bearbeitung) - Kundenadresse in Formularen - Bearbeiten-Seite fuer Buchungen - Abbau-Zeiten in Formularen und Uebersicht - Vertrag PDF nur bei Privatkunden - LexOffice Kontakt-Erstellung Fix (BUSINESS) - Zurueck-Pfeil auf Touren-Seite
This commit is contained in:
@@ -0,0 +1,432 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "UserRole" AS ENUM ('ADMIN', 'DRIVER');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "BookingStatus" AS ENUM ('RESERVED', 'CONFIRMED', 'READY_FOR_ASSIGNMENT', 'OPEN_FOR_DRIVERS', 'ASSIGNED', 'COMPLETED', 'CANCELLED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "PhotoboxStatus" AS ENUM ('AVAILABLE', 'IN_USE', 'MAINTENANCE', 'DAMAGED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "PhotoboxModel" AS ENUM ('VINTAGE_SMILE', 'VINTAGE_PHOTOS', 'NOSTALGIE', 'MAGIC_MIRROR');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "InvoiceType" AS ENUM ('PRIVATE', 'BUSINESS');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "EquipmentType" AS ENUM ('PRINTER', 'CARPET', 'VIP_BARRIER', 'ACCESSORIES_KIT', 'PRINTER_PAPER', 'TRIPOD', 'OTHER');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "EquipmentStatus" AS ENUM ('AVAILABLE', 'IN_USE', 'MAINTENANCE', 'DAMAGED', 'RESERVED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "TourStatus" AS ENUM ('PLANNED', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "User" (
|
||||
"id" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"role" "UserRole" NOT NULL DEFAULT 'DRIVER',
|
||||
"phoneNumber" TEXT,
|
||||
"vehiclePlate" TEXT,
|
||||
"vehicleModel" TEXT,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"available" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Location" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"city" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"websiteUrl" TEXT NOT NULL,
|
||||
"contactEmail" TEXT NOT NULL,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"warehouseAddress" TEXT,
|
||||
"warehouseZip" TEXT,
|
||||
"warehouseCity" TEXT,
|
||||
"imapHost" TEXT,
|
||||
"imapPort" INTEGER,
|
||||
"imapUser" TEXT,
|
||||
"imapPassword" TEXT,
|
||||
"imapSecure" BOOLEAN NOT NULL DEFAULT true,
|
||||
"smtpHost" TEXT,
|
||||
"smtpPort" INTEGER,
|
||||
"smtpUser" TEXT,
|
||||
"smtpPassword" TEXT,
|
||||
"smtpSecure" BOOLEAN NOT NULL DEFAULT true,
|
||||
"emailSyncEnabled" BOOLEAN NOT NULL DEFAULT false,
|
||||
"lastEmailSync" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Location_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "PriceConfig" (
|
||||
"id" TEXT NOT NULL,
|
||||
"locationId" TEXT NOT NULL,
|
||||
"model" "PhotoboxModel" NOT NULL,
|
||||
"basePrice" DOUBLE PRECISION NOT NULL,
|
||||
"kmFlatRate" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
"kmFlatRateUpTo" INTEGER NOT NULL DEFAULT 15,
|
||||
"pricePerKm" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
"kmMultiplier" INTEGER NOT NULL DEFAULT 4,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "PriceConfig_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Photobox" (
|
||||
"id" TEXT NOT NULL,
|
||||
"locationId" TEXT NOT NULL,
|
||||
"model" "PhotoboxModel" NOT NULL,
|
||||
"serialNumber" TEXT NOT NULL,
|
||||
"status" "PhotoboxStatus" NOT NULL DEFAULT 'AVAILABLE',
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"description" TEXT,
|
||||
"purchaseDate" TIMESTAMP(3),
|
||||
"lastMaintenance" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Photobox_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Booking" (
|
||||
"id" TEXT NOT NULL,
|
||||
"bookingNumber" TEXT NOT NULL,
|
||||
"locationId" TEXT NOT NULL,
|
||||
"photoboxId" TEXT,
|
||||
"status" "BookingStatus" NOT NULL DEFAULT 'RESERVED',
|
||||
"customerName" TEXT NOT NULL,
|
||||
"customerEmail" TEXT NOT NULL,
|
||||
"customerPhone" TEXT NOT NULL,
|
||||
"customerAddress" TEXT,
|
||||
"customerCity" TEXT,
|
||||
"customerZip" TEXT,
|
||||
"invoiceType" "InvoiceType" NOT NULL DEFAULT 'PRIVATE',
|
||||
"companyName" TEXT,
|
||||
"eventDate" TIMESTAMP(3) NOT NULL,
|
||||
"eventAddress" TEXT NOT NULL,
|
||||
"eventCity" TEXT NOT NULL,
|
||||
"eventZip" TEXT NOT NULL,
|
||||
"eventLocation" TEXT,
|
||||
"setupTimeStart" TIMESTAMP(3) NOT NULL,
|
||||
"setupTimeLatest" TIMESTAMP(3) NOT NULL,
|
||||
"dismantleTimeEarliest" TIMESTAMP(3),
|
||||
"dismantleTimeLatest" TIMESTAMP(3),
|
||||
"distance" DOUBLE PRECISION,
|
||||
"calculatedPrice" DOUBLE PRECISION,
|
||||
"contractSigned" BOOLEAN NOT NULL DEFAULT false,
|
||||
"contractSignedAt" TIMESTAMP(3),
|
||||
"contractGenerated" BOOLEAN NOT NULL DEFAULT false,
|
||||
"contractGeneratedAt" TIMESTAMP(3),
|
||||
"contractSentAt" TIMESTAMP(3),
|
||||
"contractSignedOnline" BOOLEAN NOT NULL DEFAULT false,
|
||||
"contractPdfUrl" TEXT,
|
||||
"contractSignatureData" TEXT,
|
||||
"contractSignedBy" TEXT,
|
||||
"contractSignedIp" TEXT,
|
||||
"contractUploadedBy" TEXT,
|
||||
"lexofficeOfferId" TEXT,
|
||||
"lexofficeInvoiceId" TEXT,
|
||||
"lexofficeContactId" TEXT,
|
||||
"lexofficeConfirmationId" TEXT,
|
||||
"confirmationSentAt" TIMESTAMP(3),
|
||||
"aiParsed" BOOLEAN NOT NULL DEFAULT false,
|
||||
"aiResponseDraft" TEXT,
|
||||
"aiProcessedAt" TIMESTAMP(3),
|
||||
"readyForAssignment" BOOLEAN NOT NULL DEFAULT false,
|
||||
"openForDrivers" BOOLEAN NOT NULL DEFAULT false,
|
||||
"calendarEventId" TEXT,
|
||||
"calendarSynced" BOOLEAN NOT NULL DEFAULT false,
|
||||
"calendarSyncedAt" TIMESTAMP(3),
|
||||
"tourId" TEXT,
|
||||
"notes" TEXT,
|
||||
"internalNotes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Booking_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "SetupWindow" (
|
||||
"id" TEXT NOT NULL,
|
||||
"bookingId" TEXT NOT NULL,
|
||||
"setupDate" TIMESTAMP(3) NOT NULL,
|
||||
"setupTimeStart" TIMESTAMP(3) NOT NULL,
|
||||
"setupTimeEnd" TIMESTAMP(3) NOT NULL,
|
||||
"preferred" BOOLEAN NOT NULL DEFAULT false,
|
||||
"selected" BOOLEAN NOT NULL DEFAULT false,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "SetupWindow_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Tour" (
|
||||
"id" TEXT NOT NULL,
|
||||
"tourDate" TIMESTAMP(3) NOT NULL,
|
||||
"tourNumber" TEXT NOT NULL,
|
||||
"driverId" TEXT,
|
||||
"routeOptimized" JSONB,
|
||||
"totalDistance" DOUBLE PRECISION,
|
||||
"estimatedDuration" INTEGER,
|
||||
"status" "TourStatus" NOT NULL DEFAULT 'PLANNED',
|
||||
"startedAt" TIMESTAMP(3),
|
||||
"completedAt" TIMESTAMP(3),
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Tour_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Notification" (
|
||||
"id" TEXT NOT NULL,
|
||||
"userId" TEXT,
|
||||
"type" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"message" TEXT NOT NULL,
|
||||
"read" BOOLEAN NOT NULL DEFAULT false,
|
||||
"metadata" JSONB,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Notification_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Email" (
|
||||
"id" TEXT NOT NULL,
|
||||
"locationSlug" TEXT,
|
||||
"from" TEXT NOT NULL,
|
||||
"to" TEXT NOT NULL,
|
||||
"subject" TEXT NOT NULL,
|
||||
"textBody" TEXT,
|
||||
"htmlBody" TEXT,
|
||||
"messageId" TEXT,
|
||||
"inReplyTo" TEXT,
|
||||
"bookingId" TEXT,
|
||||
"parsed" BOOLEAN NOT NULL DEFAULT false,
|
||||
"parsedData" JSONB,
|
||||
"direction" TEXT NOT NULL DEFAULT 'INBOUND',
|
||||
"receivedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Email_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Project" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Project_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Equipment" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"type" "EquipmentType" NOT NULL,
|
||||
"brand" TEXT,
|
||||
"model" TEXT,
|
||||
"serialNumber" TEXT,
|
||||
"quantity" INTEGER NOT NULL DEFAULT 1,
|
||||
"status" "EquipmentStatus" NOT NULL DEFAULT 'AVAILABLE',
|
||||
"locationId" TEXT,
|
||||
"projectId" TEXT,
|
||||
"notes" TEXT,
|
||||
"purchaseDate" TIMESTAMP(3),
|
||||
"purchasePrice" DECIMAL(65,30),
|
||||
"minStockLevel" INTEGER,
|
||||
"currentStock" INTEGER,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Equipment_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "BookingEquipment" (
|
||||
"id" TEXT NOT NULL,
|
||||
"bookingId" TEXT NOT NULL,
|
||||
"equipmentId" TEXT NOT NULL,
|
||||
"quantity" INTEGER NOT NULL DEFAULT 1,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "BookingEquipment_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "DriverAvailability" (
|
||||
"id" TEXT NOT NULL,
|
||||
"bookingId" TEXT NOT NULL,
|
||||
"driverId" TEXT NOT NULL,
|
||||
"available" BOOLEAN NOT NULL DEFAULT true,
|
||||
"message" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "DriverAvailability_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Location_slug_key" ON "Location"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Location_slug_idx" ON "Location"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "PriceConfig_locationId_model_key" ON "PriceConfig"("locationId", "model");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Photobox_serialNumber_key" ON "Photobox"("serialNumber");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Photobox_locationId_model_idx" ON "Photobox"("locationId", "model");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Photobox_status_idx" ON "Photobox"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Booking_bookingNumber_key" ON "Booking"("bookingNumber");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Booking_eventDate_idx" ON "Booking"("eventDate");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Booking_status_idx" ON "Booking"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Booking_locationId_idx" ON "Booking"("locationId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "SetupWindow_bookingId_idx" ON "SetupWindow"("bookingId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "SetupWindow_setupDate_idx" ON "SetupWindow"("setupDate");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Tour_tourNumber_key" ON "Tour"("tourNumber");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Tour_tourDate_idx" ON "Tour"("tourDate");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Tour_driverId_idx" ON "Tour"("driverId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Tour_status_idx" ON "Tour"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Notification_userId_read_idx" ON "Notification"("userId", "read");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Email_messageId_key" ON "Email"("messageId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Email_locationSlug_idx" ON "Email"("locationSlug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Email_bookingId_idx" ON "Email"("bookingId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Email_receivedAt_idx" ON "Email"("receivedAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Equipment_serialNumber_key" ON "Equipment"("serialNumber");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Equipment_type_idx" ON "Equipment"("type");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Equipment_status_idx" ON "Equipment"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Equipment_locationId_idx" ON "Equipment"("locationId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "BookingEquipment_bookingId_idx" ON "BookingEquipment"("bookingId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "BookingEquipment_equipmentId_idx" ON "BookingEquipment"("equipmentId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "BookingEquipment_bookingId_equipmentId_key" ON "BookingEquipment"("bookingId", "equipmentId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "DriverAvailability_bookingId_idx" ON "DriverAvailability"("bookingId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "DriverAvailability_driverId_idx" ON "DriverAvailability"("driverId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "DriverAvailability_bookingId_driverId_key" ON "DriverAvailability"("bookingId", "driverId");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PriceConfig" ADD CONSTRAINT "PriceConfig_locationId_fkey" FOREIGN KEY ("locationId") REFERENCES "Location"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Photobox" ADD CONSTRAINT "Photobox_locationId_fkey" FOREIGN KEY ("locationId") REFERENCES "Location"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Booking" ADD CONSTRAINT "Booking_locationId_fkey" FOREIGN KEY ("locationId") REFERENCES "Location"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Booking" ADD CONSTRAINT "Booking_photoboxId_fkey" FOREIGN KEY ("photoboxId") REFERENCES "Photobox"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Booking" ADD CONSTRAINT "Booking_tourId_fkey" FOREIGN KEY ("tourId") REFERENCES "Tour"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "SetupWindow" ADD CONSTRAINT "SetupWindow_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Tour" ADD CONSTRAINT "Tour_driverId_fkey" FOREIGN KEY ("driverId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Notification" ADD CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Email" ADD CONSTRAINT "Email_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Equipment" ADD CONSTRAINT "Equipment_locationId_fkey" FOREIGN KEY ("locationId") REFERENCES "Location"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Equipment" ADD CONSTRAINT "Equipment_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "BookingEquipment" ADD CONSTRAINT "BookingEquipment_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "BookingEquipment" ADD CONSTRAINT "BookingEquipment_equipmentId_fkey" FOREIGN KEY ("equipmentId") REFERENCES "Equipment"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "DriverAvailability" ADD CONSTRAINT "DriverAvailability_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "DriverAvailability" ADD CONSTRAINT "DriverAvailability_driverId_fkey" FOREIGN KEY ("driverId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user