// 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 = "sqlite" url = env("DATABASE_URL") } model User { id String @id @default(uuid()) email String @unique password String role String @default("USER") // USER, ADMIN isFirstLogin Boolean @default(true) isBlocked Boolean @default(false) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt profile UserProfile? sessions WorkoutSession[] exercises Exercise[] plans WorkoutPlan[] weightRecords BodyWeightRecord[] } model BodyWeightRecord { id String @id @default(uuid()) userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) weight Float date DateTime @default(now()) dateStr String // YYYY-MM-DD for unique constraint @@unique([userId, dateStr]) } model UserProfile { id String @id @default(uuid()) userId String @unique user User @relation(fields: [userId], references: [id], onDelete: Cascade) weight Float? height Float? gender String? birthDate DateTime? language String? @default("en") } model Exercise { id String @id @default(uuid()) userId String? // Null means system default user User? @relation(fields: [userId], references: [id], onDelete: Cascade) name String type String // STRENGTH, CARDIO, BODYWEIGHT, STATIC bodyWeightPercentage Float? @default(0) isArchived Boolean @default(false) sets WorkoutSet[] } model WorkoutSession { id String @id @default(uuid()) userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) startTime DateTime endTime DateTime? userBodyWeight Float? note String? planId String? planName String? sets WorkoutSet[] } model WorkoutSet { id String @id @default(uuid()) sessionId String session WorkoutSession @relation(fields: [sessionId], references: [id], onDelete: Cascade) exerciseId String exercise Exercise @relation(fields: [exerciseId], references: [id]) order Int weight Float? reps Int? distanceMeters Float? durationSeconds Int? completed Boolean @default(true) } model WorkoutPlan { id String @id @default(uuid()) userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) name String description String? exercises String // JSON string of exercise IDs createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }