Spaces:
Sleeping
Sleeping
File size: 2,448 Bytes
b26189e | 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 | // OMNIA Eats — standalone database (separate from Stays and the agent).
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
enum OrderStatus {
pending
preparing
delivering
delivered
cancelled
}
// Shared Clerk identity: clerkId is the same across all OMNIA apps.
model User {
id String @id @default(cuid())
clerkId String @unique
email String?
firstName String?
lastName String?
imageUrl String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
orders Order[]
reviews Review[]
@@map("users")
}
model Vendor {
id String @id @default(cuid())
name String
city String
cuisine String?
rating Float?
deliveryFee Int @default(0)
etaMinutes Int @default(30)
image String?
description String?
createdAt DateTime @default(now())
items MenuItem[]
orders Order[]
reviewRows Review[]
@@index([city])
@@map("vendors")
}
model Review {
id String @id @default(cuid())
vendorId String
userId String
authorName String @default("Guest")
rating Int // 1..5
comment String?
createdAt DateTime @default(now())
vendor Vendor @relation(fields: [vendorId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([vendorId])
@@map("reviews")
}
model MenuItem {
id String @id @default(cuid())
vendorId String
name String
price Int
description String?
image String?
category String?
vendor Vendor @relation(fields: [vendorId], references: [id], onDelete: Cascade)
@@index([vendorId])
@@map("menu_items")
}
model Order {
id String @id @default(cuid())
userId String
vendorId String
items Json // snapshot: [{ name, price, qty }]
subtotal Int
deliveryFee Int @default(0)
total Int
currency String @default("MAD")
status OrderStatus @default(preparing)
source String @default("web") // "web" | "agent"
createdAt DateTime @default(now())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
vendor Vendor @relation(fields: [vendorId], references: [id], onDelete: Cascade)
@@index([userId])
@@map("orders")
}
|