Moheb Dabilkar
08/26/2022, 5:48 PMgenerator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
firstName String
lastName String?
birthDate DateTime
phoneNumber Int @unique
verified Boolean @default(false)
address Address[]
password String @default("None")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Owner {
id Int @id @default(autoincrement())
email String @unique
firstName String
lastName String?
birthDate DateTime
phoneNumber Int @unique
verified Boolean @default(false)
address Address[]
restaurantId Int[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Admin {
id Int @id @default(autoincrement())
email String @unique
firstName String
lastName String?
birthDate DateTime
phoneNumber Int @unique
verified Boolean @default(false)
address Address[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Address {
id Int @id @default(autoincrement())
User User? @relation(fields: [userId], references: [id])
userId Int?
line1 String
line2 String
area String
city String
type AddressType @default(HOME)
Owner Owner? @relation(fields: [ownerId], references: [id])
ownerId Int?
Admin Admin? @relation(fields: [adminId], references: [id])
adminId Int?
}
enum AddressType {
HOME
OFFICE
OTHER
}
Order Service:
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Order {
id Int @id @default(autoincrement())
user Int
rider Int?
restaurant Restaurant @relation(fields: [restaurantId], references: [id])
restaurantId Int
orderPickedTime DateTime?
orderDeliveredTime DateTime?
total Int
deliveryFee Int
couponDiscount Int
finalTotal Int
dishes Dishes[]
orderStatus ORDER_STATUS @default(CREATED)
address Address @relation(fields: [addressId], references: [id])
addressId Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Address {
id Int @id @default(autoincrement())
line1 String
line2 String
area String
city String
userId Int[]
order Order[]
Restaurant Restaurant? @relation(fields: [restaurantId], references: [id])
restaurantId Int? @unique
type ADDRESS_TYPE @default(HOME)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Restaurant {
id Int @id @default(autoincrement())
name String
vegOnly Boolean @default(false)
ownerId Int
dishes Dishes[]
address Address?
restaurantStatus CURRENT_STATUS @default(OFFLINE)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Order Order[]
}
model Dishes {
id Int @id @default(autoincrement())
name String
veg Boolean @default(false)
glutenFree Boolean @default(false)
order Order[]
category category[]
restaurant Restaurant @relation(fields: [restaurantId], references: [id])
restaurantId Int
cost Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model category {
id Int @id @default(autoincrement())
name String @unique
dishes Dishes[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum ORDER_STATUS {
CREATED
PICKEDUP
DELIVERED
CANCELLED
}
enum DISH_STATUS {
AVAILABLE
UNAVAILABLE
}
enum CURRENT_STATUS {
OFFLINE
ONLINE
}
enum ADDRESS_TYPE {
HOME
OFFICE
RESTAURANT
OTHER
}