feat: enhance user preferences management with userId integration
- Added `userId` field to `UserPreferences` model in Prisma schema for user-specific preferences. - Implemented migration to populate existing preferences with the first user. - Updated user preferences service methods to handle user-specific data retrieval and updates. - Modified API routes and components to ensure user authentication and fetch preferences based on the authenticated user. - Enhanced session management in various components to load user preferences accordingly.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
-- Migration pour ajouter userId aux UserPreferences
|
||||
-- et migrer les données existantes vers le premier utilisateur
|
||||
|
||||
-- 1. Ajouter la colonne userId (nullable temporairement)
|
||||
ALTER TABLE "user_preferences" ADD COLUMN "userId" TEXT;
|
||||
|
||||
-- 2. Créer un index unique sur userId
|
||||
CREATE UNIQUE INDEX "user_preferences_userId_key" ON "user_preferences"("userId");
|
||||
|
||||
-- 3. Migrer les données existantes vers le premier utilisateur
|
||||
-- (on suppose qu'il y a au moins un utilisateur dans la table users)
|
||||
UPDATE "user_preferences"
|
||||
SET "userId" = (SELECT id FROM "users" LIMIT 1)
|
||||
WHERE "userId" IS NULL;
|
||||
|
||||
-- 4. Rendre la colonne userId non-nullable
|
||||
-- Note: SQLite ne supporte pas ALTER COLUMN, donc on doit recréer la table
|
||||
-- Mais comme on a déjà des données, on va juste s'assurer que toutes les entrées ont un userId
|
||||
-- En production, on devrait faire une migration plus complexe
|
||||
|
||||
-- 5. Ajouter la contrainte de clé étrangère
|
||||
-- SQLite ne supporte pas les contraintes de clé étrangère dans ALTER TABLE
|
||||
-- La contrainte sera gérée par Prisma au niveau applicatif
|
||||
@@ -20,6 +20,7 @@ model User {
|
||||
password String // Hashé avec bcrypt
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
preferences UserPreferences?
|
||||
|
||||
@@map("users")
|
||||
}
|
||||
@@ -101,6 +102,7 @@ model DailyCheckbox {
|
||||
|
||||
model UserPreferences {
|
||||
id String @id @default(cuid())
|
||||
userId String @unique
|
||||
kanbanFilters Json?
|
||||
viewPreferences Json?
|
||||
columnVisibility Json?
|
||||
@@ -112,6 +114,7 @@ model UserPreferences {
|
||||
tfsSyncInterval String @default("daily")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@map("user_preferences")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user