generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

// ===================== کاربران و احراز هویت =====================

model User {
  id          String   @id @default(cuid())
  phone       String   @unique
  password    String? // هش رمز عبور (scrypt) — ورود با موبایل و رمز
  name        String?
  postalCode  String?
  address     String?
  isAdmin     Boolean  @default(false)
  createdAt   DateTime @default(now())
  orders      Order[]
}

// ===================== فروشگاه =====================

model Product {
  id              String      @id @default(cuid())
  title           String
  category        String
  image           String
  shortDesc       String
  features        String      @default("[]") // JSON array
  price           Int // تومان
  discountPercent Int         @default(0)
  stock           Int         @default(10)
  badge           String?
  badgeTone       String? // gold | cyan | rose | violet
  accent          String      @default("cyan") // cyan | violet | gold
  rating          Float       @default(4.8)
  featured        Boolean     @default(true)
  active          Boolean     @default(true)
  sortOrder       Int         @default(0)
  createdAt       DateTime    @default(now())
  orderItems      OrderItem[]
}

model Order {
  id              String      @id @default(cuid())
  code            String      @unique // شماره فاکتور
  userId          String?
  user            User?       @relation(fields: [userId], references: [id])
  customerName    String
  customerPhone   String
  address         String
  postalCode      String
  note            String?
  itemsTotal      Int
  discountTotal   Int
  shippingCost    Int         @default(0)
  total           Int
  status          String      @default("pending") // pending | awaiting_payment | paid | processing | shipped | delivered | cancelled
  paymentStatus   String      @default("unpaid") // unpaid | paid | failed
  paymentMethod   String      @default("online") // online | manual
  paymentRef      String?
  isManualInvoice Boolean     @default(false)
  createdAt       DateTime    @default(now())
  items           OrderItem[]
}

model OrderItem {
  id        String   @id @default(cuid())
  orderId   String
  order     Order    @relation(fields: [orderId], references: [id], onDelete: Cascade)
  productId String?
  product   Product? @relation(fields: [productId], references: [id])
  title     String
  price     Int // قیمت واحد بعد از تخفیف (تومان)
  qty       Int
}

model Banner {
  id        String   @id @default(cuid())
  title     String
  subtitle  String?
  image     String
  link      String?
  position  String   @default("home") // home | products
  active    Boolean  @default(true)
  sortOrder Int      @default(0)
  createdAt DateTime @default(now())
}

model Article {
  id        String   @id @default(cuid())
  title     String
  excerpt   String
  content   String
  image     String?
  day       String?
  month     String?
  tone      String   @default("gold") // gold | cyan | violet
  published Boolean  @default(true)
  createdAt DateTime @default(now())
}

model SiteContent {
  key   String @id
  value String
}

// ===================== تعمیرات =====================

model RepairRequest {
  id          String   @id @default(cuid())
  fullName    String
  phone       String
  deviceType  String
  description String?
  status      String   @default("new") // new | in_progress | done | cancelled
  createdAt   DateTime @default(now())
}
