-
Notifications
You must be signed in to change notification settings - Fork 0
/
schema.prisma
155 lines (140 loc) · 3.15 KB
/
schema.prisma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
// SETTINGS
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgres"
url = env("DATABASE_URL")
}
// MODELS
model Customer {
id String @id @default(uuid())
email String @unique
password String
firstName String
lastName String
payment Payment @default(CASH)
phone String?
address Address? @relation(fields: [addressId], references: [id])
addressId String?
cart Order? @relation("CustomerCart", fields: [orderId], references: [id])
orderId String?
orders Order[]
favorites Service[]
ratings Rating[]
}
model Service {
id String @id @default(uuid())
email String @unique
password String
name String
description String?
picture String?
phone String?
web String?
category ServiceCategory
openingHours OpeningHour[]
orders Order[]
ratings Rating[]
menu Item[]
address Address? @relation(fields: [addressId], references: [id])
addressId String?
customers Customer[]
}
model Address {
id String @id @default(uuid())
customer Customer?
service Service?
country String?
city String?
street String?
postalCode String?
}
model Order {
id String @id @default(uuid())
service Service? @relation(fields: [serviceId], references: [id])
serviceId String?
items OrderItem[]
customer Customer? @relation(fields: [customerId], references: [id])
customerId String?
owner Customer? @relation("CustomerCart")
payment Payment @default(CASH)
status Status @default(WAITING)
completedAt DateTime?
createdAt DateTime @default(now())
}
model OrderItem {
id String @id @default(uuid())
amount Int @default(1)
item Item @relation(fields: [itemId], references: [id])
itemId String
order Order @relation(fields: [orderId], references: [id])
orderId String
}
model Item {
id String @id @default(uuid())
name String
description String?
picture String?
price Float
weight Float?
time Float?
categories ItemCategory[]
service Service @relation(fields: [serviceId], references: [id])
serviceId String
orderItems OrderItem[]
}
model Rating {
value Float
customer Customer @relation(fields: [customerId], references: [id])
customerId String
service Service @relation(fields: [serviceId], references: [id])
serviceId String
@@unique([customerId, serviceId])
}
model OpeningHour {
id String @id @default(uuid())
day Day
from DateTime
to DateTime
service Service? @relation(fields: [serviceId], references: [id])
serviceId String?
}
// ENUMS
enum Status {
WAITING
READY
CONFIRMED
SENT
COMPLETED
}
enum Payment {
CASH
CARD
ONLINE
}
enum ServiceCategory {
RESTAURANT
CANTEEN
PIZZA
DELIVERY
PATISSERIE
PUB
FASTFOOD
}
enum ItemCategory {
DRINK
SOUP
PIZZA
MEAT
DESSERT
}
enum Day {
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
}