switch to prisma

This commit is contained in:
Thomas Ruoff
2022-10-11 11:43:32 +02:00
parent 41342475ba
commit 1ef9b14e95
28 changed files with 764 additions and 780 deletions

View File

@@ -0,0 +1,148 @@
-- CreateEnum
CREATE TYPE "BillStatus" AS ENUM ('UNINVOICED', 'INVOICED', 'PAID');
-- CreateEnum
CREATE TYPE "BookingStatus" AS ENUM ('REQUESTED', 'CONFIRMED', 'REJECTED', 'CANCELED');
-- CreateTable
CREATE TABLE "AdditionalCosts" (
"id" SERIAL NOT NULL,
"name" TEXT NOT NULL,
"value" DECIMAL(65,30) NOT NULL,
CONSTRAINT "AdditionalCosts_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Bill" (
"id" SERIAL NOT NULL,
"createdAt" DATE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATE NOT NULL,
"milageEnd" INTEGER NOT NULL,
"milageStart" INTEGER NOT NULL,
"status" "BillStatus" NOT NULL DEFAULT 'UNINVOICED',
"tarif" DECIMAL(65,30) NOT NULL,
CONSTRAINT "Bill_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Booking" (
"id" TEXT NOT NULL,
"uuid" TEXT NOT NULL,
"createdAt" DATE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATE NOT NULL,
"billId" INTEGER NOT NULL,
"calendarEventId" TEXT,
"city" TEXT NOT NULL,
"destination" TEXT NOT NULL,
"email" TEXT NOT NULL,
"endDate" TEXT NOT NULL,
"name" TEXT NOT NULL,
"org" TEXT NOT NULL,
"phone" TEXT NOT NULL,
"purpose" TEXT NOT NULL,
"startDate" TEXT NOT NULL,
"status" "BookingStatus" NOT NULL DEFAULT 'REQUESTED',
"street" TEXT NOT NULL,
"zip" TEXT NOT NULL,
CONSTRAINT "Booking_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Account" (
"id" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"provider" TEXT NOT NULL,
"providerAccountId" TEXT NOT NULL,
"refresh_token" TEXT,
"access_token" TEXT,
"expires_at" INTEGER,
"token_type" TEXT,
"scope" TEXT,
"id_token" TEXT,
"session_state" TEXT,
CONSTRAINT "Account_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Session" (
"id" TEXT NOT NULL,
"sessionToken" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"expires" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Session_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "User" (
"id" TEXT NOT NULL,
"name" TEXT,
"email" TEXT,
"emailVerified" TIMESTAMP(3),
"image" TEXT,
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "VerificationToken" (
"identifier" TEXT NOT NULL,
"token" TEXT NOT NULL,
"expires" TIMESTAMP(3) NOT NULL
);
-- CreateTable
CREATE TABLE "_AdditionalCostsToBill" (
"A" INTEGER NOT NULL,
"B" INTEGER NOT NULL
);
-- CreateIndex
CREATE UNIQUE INDEX "Booking_uuid_key" ON "Booking"("uuid");
-- CreateIndex
CREATE UNIQUE INDEX "Booking_billId_key" ON "Booking"("billId");
-- CreateIndex
CREATE INDEX "uuid_1" ON "Booking"("uuid");
-- CreateIndex
CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId");
-- CreateIndex
CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken");
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
-- CreateIndex
CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token");
-- CreateIndex
CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token");
-- CreateIndex
CREATE UNIQUE INDEX "_AdditionalCostsToBill_AB_unique" ON "_AdditionalCostsToBill"("A", "B");
-- CreateIndex
CREATE INDEX "_AdditionalCostsToBill_B_index" ON "_AdditionalCostsToBill"("B");
-- AddForeignKey
ALTER TABLE "Booking" ADD CONSTRAINT "Booking_billId_fkey" FOREIGN KEY ("billId") REFERENCES "Bill"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_AdditionalCostsToBill" ADD CONSTRAINT "_AdditionalCostsToBill_A_fkey" FOREIGN KEY ("A") REFERENCES "AdditionalCosts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_AdditionalCostsToBill" ADD CONSTRAINT "_AdditionalCostsToBill_B_fkey" FOREIGN KEY ("B") REFERENCES "Bill"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -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"

110
prisma/schema.prisma Normal file
View File

@@ -0,0 +1,110 @@
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgres"
url = env("POSTGRES_URI")
}
model AdditionalCosts {
id Int @id @default(autoincrement())
name String
value Decimal
Bill Bill[]
}
enum BillStatus {
UNINVOICED
INVOICED
PAID
}
model Bill {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @db.Date
updatedAt DateTime @updatedAt @db.Date
milageEnd Int
milageStart Int
status BillStatus @default(UNINVOICED)
tarif Decimal
additionalCosts AdditionalCosts[]
booking Booking?
}
enum BookingStatus {
REQUESTED
CONFIRMED
REJECTED
CANCELED
}
model Booking {
id String @id @default(uuid())
uuid String @unique @default(uuid())
createdAt DateTime @default(now()) @db.Date
updatedAt DateTime @updatedAt @db.Date
bill Bill? @relation(fields: [billId], references: [id], onDelete: Cascade)
billId Int @unique
calendarEventId String?
city String
destination String
email String
endDate String
name String
org String
phone String
purpose String
startDate String
status BookingStatus @default(REQUESTED)
street String
zip String
@@index([uuid], map: "uuid_1")
}
// next-auth
model Account {
id String @id @default(cuid())
userId String
type String
provider String
providerAccountId String
refresh_token String? @db.Text
access_token String? @db.Text
expires_at Int?
token_type String?
scope String?
id_token String? @db.Text
session_state String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([provider, providerAccountId])
}
model Session {
id String @id @default(cuid())
sessionToken String @unique
userId String
expires DateTime
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
image String?
accounts Account[]
sessions Session[]
}
model VerificationToken {
identifier String
token String @unique
expires DateTime
@@unique([identifier, token])
}