← back to ClawCoder

prisma/schema.prisma

55 lines

generator client {
  provider = "prisma-client"
  output   = "../src/generated/prisma"
}

datasource db {
  provider = "postgresql"
}

model User {
  id          String     @id @default(uuid())
  email       String?    @unique
  tier        String     @default("free")
  profileSlug String?    @map("profile_slug")
  preferences Json       @default("{}")
  createdAt   DateTime   @default(now()) @map("created_at")
  updatedAt   DateTime   @updatedAt @map("updated_at")
  analyses    Analysis[]

  @@map("users")
}

model Analysis {
  id                  String              @id @default(uuid())
  userId              String?             @map("user_id")
  user                User?               @relation(fields: [userId], references: [id])
  inputContent        String              @map("input_content")
  inputSource         String?             @map("input_source")
  overallScore        Float?              @map("overall_score")
  letterGrade         String?             @map("letter_grade")
  criteriaScores      Json                @map("criteria_scores")
  pros                Json                @default("[]")
  cons                Json                @default("[]")
  suggestions         Json                @default("[]")
  detectedProfileSlug String?             @map("detected_profile_slug")
  createdAt           DateTime            @default(now()) @map("created_at")
  appliedSuggestions  AppliedSuggestion[]

  @@index([userId])
  @@index([createdAt])
  @@map("analyses")
}

model AppliedSuggestion {
  id            String   @id @default(uuid())
  analysisId    String   @map("analysis_id")
  analysis      Analysis @relation(fields: [analysisId], references: [id])
  suggestionId  String   @map("suggestion_id")
  appliedAt     DateTime @default(now()) @map("applied_at")
  resultContent String?  @map("result_content")

  @@index([analysisId])
  @@map("applied_suggestions")
}