๐ Database Schema โ
The database schema is defined in prisma/schema.prisma using Prisma ORM. It targets PostgreSQL 16.
๐ Models by Domain โ
๐ค Users & Authentication โ
| Model | Table | Description |
|---|---|---|
User | users | Staff/admin accounts with roles |
Customer | customers | Customer accounts (registered or guest) |
CustomerGroup | customer_groups | Customer segmentation |
Address | addresses | Customer delivery addresses |
๐ Locations โ
| Model | Table | Description |
|---|---|---|
Location | locations | Restaurant locations |
OperatingHour | operating_hours | Per-day open/close times |
DeliveryZone | delivery_zones | Delivery areas with fees |
๐ฝ๏ธ Menu โ
| Model | Table | Description |
|---|---|---|
Category | categories | Menu categories (hierarchical) |
MenuItem | menu_items | Menu items with pricing |
MenuOption | menu_options | Option groups (Size, Toppings) |
MenuOptionValue | menu_option_values | Individual options (Small, Large) |
Mealtime | mealtimes | Time-based availability windows |
MenuItemMealtime | menu_item_mealtimes | Item โ mealtime junction |
Allergen | allergens | Allergen types |
MenuItemAllergen | menu_item_allergens | Item โ allergen junction |
๐ Orders & Payments โ
| Model | Table | Description |
|---|---|---|
Order | orders | Customer orders |
OrderItem | order_items | Line items in an order |
OrderItemOption | order_item_options | Selected options per line item |
Payment | payments | Payment records (Stripe, PayPal, cash) |
๐ช Reservations โ
| Model | Table | Description |
|---|---|---|
Table | tables | Restaurant tables |
Reservation | reservations | Table reservations |
๐ฃ Marketing & Engagement โ
| Model | Table | Description |
|---|---|---|
Coupon | coupons | Discount coupons |
Review | reviews | Customer reviews |
LoyaltyTransaction | loyalty_transactions | Loyalty point history |
AutomationRule | automation_rules | Event-driven automation |
๐ท๏ธ Enums โ
| Enum | Values |
|---|---|
Role | SUPER_ADMIN, MANAGER, STAFF |
OrderType | DELIVERY, PICKUP |
OrderStatus | PENDING, CONFIRMED, PREPARING, READY, OUT_FOR_DELIVERY, DELIVERED, PICKED_UP, CANCELLED |
PaymentMethod | CASH, STRIPE, PAYPAL |
PaymentStatus | PENDING, COMPLETED, FAILED, REFUNDED |
ReservationStatus | PENDING, CONFIRMED, SEATED, COMPLETED, CANCELLED |
CouponType | PERCENTAGE, FIXED, FREE_DELIVERY |
MenuOptionDisplayType | SELECT, RADIO, CHECKBOX, QUANTITY |
LoyaltyTransactionType | EARN, REDEEM, ADJUST |
๐ Key Relationships โ
- ๐ค
Userbelongs to aLocation(optional staff assignment) - ๐๏ธ
Customerhas manyAddress,Order,Reservation,Review,LoyaltyTransaction - ๐
Locationhas manyCategory,MenuItem,Table,DeliveryZone,OperatingHour,Order,Reservation,Review - ๐
Categoryhas self-referential parent/children for nesting - ๐
MenuItembelongs toCategory, has manyMenuOption,MenuItemMealtime,MenuItemAllergen - ๐ฆ
Orderhas manyOrderItem,Payment,Review,LoyaltyTransaction - ๐
OrderItemhas manyOrderItemOption(snapshot of selected options)
๐๏ธ Cascade Behaviors โ
The following relations use onDelete: Cascade:
Addressโ deleted whenCustomeris deletedOrderItemโ deleted whenOrderis deletedOrderItemOptionโ deleted whenOrderItemis deletedPaymentโ deleted whenOrderis deletedMenuOptionโ deleted whenMenuItemis deletedMenuOptionValueโ deleted whenMenuOptionis deletedTableโ deleted whenLocationis deletedDeliveryZoneโ deleted whenLocationis deletedOperatingHourโ deleted whenLocationis deleted- Junction tables (
MenuItemMealtime,MenuItemAllergen) โ deleted when either side is deleted