// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

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

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

enum Role {
  ADMIN
  PHARMACY
}

enum PharmacyStatus {
  PENDING
  ACTIVE
  SUSPENDED
  CANCELED
}

model User {
  id           String   @id @default(cuid())
  email        String   @unique
  passwordHash String
  role         Role
  pharmacyId   String?
  pharmacy     Pharmacy? @relation(fields: [pharmacyId], references: [id])
  createdAt    DateTime  @default(now())

  resetTokens PasswordResetToken[]
}

model PasswordResetToken {
  id        String    @id @default(cuid())
  userId    String
  user      User      @relation(fields: [userId], references: [id], onDelete: Cascade)
  tokenHash String    @unique
  expiresAt DateTime
  usedAt    DateTime?
  createdAt DateTime  @default(now())

  @@index([userId])
}

model Pharmacy {
  id                   String         @id @default(cuid())
  name                 String
  siret                String?
  address              String?
  phone                String?
  contactEmail         String
  status               PharmacyStatus @default(PENDING)
  slug                 String         @unique
  qrCodeUrl            String?
  logoUrl              String?
  stripeCustomerId     String?
  stripeSubscriptionId String?
  createdAt            DateTime       @default(now())
  updatedAt            DateTime       @updatedAt

  users  User[]
  bilans Bilan[]
}

model Bilan {
  id                String   @id @default(cuid())
  pharmacyId        String
  pharmacy          Pharmacy @relation(fields: [pharmacyId], references: [id])
  patientFirstName  String?
  patientLastName   String?
  ageRange          String?
  answers           Json
  analysis          Json
  priorityCount     Int      @default(0)
  highPriorityCount Int      @default(0)
  pdfUrl            String?
  createdAt         DateTime @default(now())

  @@index([pharmacyId, createdAt])
}
