feat(DailyCheckbox): associate checkboxes with users and enhance daily view functionality
- Added userId field to DailyCheckbox model for user association. - Updated DailyService methods to handle user-specific checkbox retrieval and management. - Integrated user authentication checks in API routes and actions for secure access to daily data. - Enhanced DailyPage to display user-specific daily views, ensuring proper session handling. - Updated client and service interfaces to reflect changes in data structure.
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
-- Migration pour ajouter userId aux DailyCheckbox
|
||||
-- et associer les entrées existantes au premier utilisateur
|
||||
|
||||
-- 1. Ajouter la colonne userId (nullable temporairement)
|
||||
ALTER TABLE "daily_checkboxes" ADD COLUMN "userId" TEXT;
|
||||
|
||||
-- 2. Migrer les données existantes vers le premier utilisateur
|
||||
-- (on suppose qu'il y a au moins un utilisateur dans la table users)
|
||||
UPDATE "daily_checkboxes"
|
||||
SET "userId" = (SELECT id FROM "users" LIMIT 1)
|
||||
WHERE "userId" IS NULL;
|
||||
|
||||
-- 3. Créer un index sur userId pour les performances
|
||||
CREATE INDEX "daily_checkboxes_userId_idx" ON "daily_checkboxes"("userId");
|
||||
|
||||
-- Note: La contrainte de clé étrangère sera gérée par Prisma
|
||||
-- SQLite ne supporte pas les contraintes de clé étrangère dans ALTER TABLE
|
||||
@@ -8,20 +8,21 @@ datasource db {
|
||||
}
|
||||
|
||||
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?
|
||||
notes Note[]
|
||||
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?
|
||||
notes Note[]
|
||||
dailyCheckboxes DailyCheckbox[]
|
||||
|
||||
@@map("users")
|
||||
}
|
||||
@@ -98,11 +99,14 @@ model DailyCheckbox {
|
||||
type String @default("task")
|
||||
order Int @default(0)
|
||||
taskId String?
|
||||
userId String
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
task Task? @relation(fields: [taskId], references: [id])
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([date])
|
||||
@@index([userId])
|
||||
@@map("daily_checkboxes")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user