Initial commit: Harat's Booking monorepo with deploy setup
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
enum Role {
|
||||
USER
|
||||
ADMIN
|
||||
}
|
||||
|
||||
enum ReservationStatus {
|
||||
PENDING
|
||||
CONFIRMED
|
||||
CANCELLED
|
||||
COMPLETED
|
||||
}
|
||||
|
||||
enum DishAvailability {
|
||||
AVAILABLE
|
||||
STOPPED
|
||||
}
|
||||
|
||||
model User {
|
||||
id Int @id @default(autoincrement())
|
||||
phone String @unique @db.VarChar(20)
|
||||
password String @db.VarChar(255)
|
||||
name String @db.VarChar(100)
|
||||
surname String? @db.VarChar(100)
|
||||
email String? @db.VarChar(255)
|
||||
role Role @default(USER)
|
||||
cardToken String? @db.VarChar(255)
|
||||
cardLastFour String? @db.VarChar(4)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
reservations Reservation[]
|
||||
}
|
||||
|
||||
model Pub {
|
||||
id Int @id @default(autoincrement())
|
||||
address String @unique @db.VarChar(255)
|
||||
phone String @db.VarChar(20)
|
||||
name String @db.VarChar(100)
|
||||
createdAt DateTime @default(now())
|
||||
tables Table[]
|
||||
menus Menu[]
|
||||
lunchMenus LunchMenu[]
|
||||
billboards Billboard[]
|
||||
reservations Reservation[]
|
||||
}
|
||||
|
||||
model Table {
|
||||
id Int @id @default(autoincrement())
|
||||
pubId Int
|
||||
number Int
|
||||
capacity Int
|
||||
posX Float
|
||||
posY Float
|
||||
width Float @default(60)
|
||||
height Float @default(60)
|
||||
shape String @default("rect") @db.VarChar(20)
|
||||
zone String? @db.VarChar(50)
|
||||
pub Pub @relation(fields: [pubId], references: [id])
|
||||
reservations Reservation[]
|
||||
|
||||
@@unique([pubId, number])
|
||||
}
|
||||
|
||||
model Category {
|
||||
id Int @id @default(autoincrement())
|
||||
title String @unique @db.VarChar(100)
|
||||
dishes Dish[]
|
||||
}
|
||||
|
||||
model Dish {
|
||||
id Int @id @default(autoincrement())
|
||||
title String @db.VarChar(100)
|
||||
description String? @db.Text
|
||||
categoryId Int
|
||||
grams Int?
|
||||
price Decimal @db.Decimal(10, 2)
|
||||
photo String? @db.VarChar(255)
|
||||
availability DishAvailability @default(AVAILABLE)
|
||||
category Category @relation(fields: [categoryId], references: [id])
|
||||
menus Menu[]
|
||||
lunchMenus LunchMenu[]
|
||||
orderItems ReservationDish[]
|
||||
}
|
||||
|
||||
model Menu {
|
||||
id Int @id @default(autoincrement())
|
||||
pubId Int
|
||||
dishId Int
|
||||
pub Pub @relation(fields: [pubId], references: [id])
|
||||
dish Dish @relation(fields: [dishId], references: [id])
|
||||
|
||||
@@unique([pubId, dishId])
|
||||
}
|
||||
|
||||
model LunchMenu {
|
||||
id Int @id @default(autoincrement())
|
||||
pubId Int
|
||||
dishId Int
|
||||
weekStart DateTime @db.Date
|
||||
weekEnd DateTime @db.Date
|
||||
pub Pub @relation(fields: [pubId], references: [id])
|
||||
dish Dish @relation(fields: [dishId], references: [id])
|
||||
|
||||
@@unique([pubId, dishId, weekStart])
|
||||
}
|
||||
|
||||
model Billboard {
|
||||
id Int @id @default(autoincrement())
|
||||
title String @db.VarChar(200)
|
||||
artist String @db.VarChar(100)
|
||||
pubId Int
|
||||
datetime DateTime
|
||||
poster String? @db.VarChar(255)
|
||||
pub Pub @relation(fields: [pubId], references: [id])
|
||||
}
|
||||
|
||||
model Reservation {
|
||||
id Int @id @default(autoincrement())
|
||||
userId Int
|
||||
pubId Int
|
||||
tableId Int
|
||||
date DateTime @db.Date
|
||||
time DateTime @db.Time()
|
||||
numPeople Int
|
||||
status ReservationStatus @default(PENDING)
|
||||
totalCost Decimal? @db.Decimal(10, 2)
|
||||
prepaid Decimal? @db.Decimal(10, 2)
|
||||
paymentId String? @db.VarChar(255)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
pub Pub @relation(fields: [pubId], references: [id])
|
||||
table Table @relation(fields: [tableId], references: [id])
|
||||
dishes ReservationDish[]
|
||||
}
|
||||
|
||||
model ReservationDish {
|
||||
id Int @id @default(autoincrement())
|
||||
reservationId Int
|
||||
dishId Int
|
||||
quantity Int @default(1)
|
||||
priceAtOrder Decimal @db.Decimal(10, 2)
|
||||
reservation Reservation @relation(fields: [reservationId], references: [id], onDelete: Cascade)
|
||||
dish Dish @relation(fields: [dishId], references: [id])
|
||||
|
||||
@@unique([reservationId, dishId])
|
||||
}
|
||||
Reference in New Issue
Block a user