generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) email String @unique name String? firstName String? lastName String? avatar String? // URL de l'avatar role String @default("user") // user, admin, etc. isActive Boolean @default(true) lastLoginAt DateTime? password String // Hashé avec bcrypt createdAt DateTime @default(now()) updatedAt DateTime @updatedAt preferences UserPreferences? @@map("users") } model Task { id String @id @default(cuid()) title String description String? status String @default("todo") priority String @default("medium") source String sourceId String? dueDate DateTime? completedAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt jiraProject String? jiraKey String? assignee String? jiraType String? tfsProject String? tfsPullRequestId Int? tfsRepository String? tfsSourceBranch String? tfsTargetBranch String? primaryTagId String? primaryTag Tag? @relation("PrimaryTag", fields: [primaryTagId], references: [id]) dailyCheckboxes DailyCheckbox[] taskTags TaskTag[] @@unique([source, sourceId]) @@map("tasks") } model Tag { id String @id @default(cuid()) name String @unique color String @default("#6b7280") isPinned Boolean @default(false) taskTags TaskTag[] primaryTasks Task[] @relation("PrimaryTag") @@map("tags") } model TaskTag { taskId String tagId String tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade) task Task @relation(fields: [taskId], references: [id], onDelete: Cascade) @@id([taskId, tagId]) @@map("task_tags") } model SyncLog { id String @id @default(cuid()) source String status String message String? tasksSync Int @default(0) createdAt DateTime @default(now()) @@map("sync_logs") } model DailyCheckbox { id String @id @default(cuid()) date DateTime text String isChecked Boolean @default(false) type String @default("task") order Int @default(0) taskId String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt task Task? @relation(fields: [taskId], references: [id]) @@index([date]) @@map("daily_checkboxes") } model UserPreferences { id String @id @default(cuid()) userId String @unique kanbanFilters Json? viewPreferences Json? columnVisibility Json? jiraConfig Json? jiraAutoSync Boolean @default(false) jiraSyncInterval String @default("daily") tfsConfig Json? tfsAutoSync Boolean @default(false) tfsSyncInterval String @default("daily") createdAt DateTime @default(now()) updatedAt DateTime @updatedAt user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@map("user_preferences") }