feat(Notes): add folder management to notes, allowing notes to be categorized into folders, and update related components for folder selection and display
This commit is contained in:
0
prisma/data/dev.db
Normal file
0
prisma/data/dev.db
Normal file
@@ -0,0 +1,23 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "folders" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"tagId" TEXT,
|
||||
"parentId" TEXT,
|
||||
"order" INTEGER NOT NULL DEFAULT 0,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "folders_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "folders_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES "tags" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT "folders_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "folders" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- AlterTable Note - Add folderId column
|
||||
ALTER TABLE "Note" ADD COLUMN "folderId" TEXT;
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "folders_userId_idx" ON "folders"("userId");
|
||||
CREATE INDEX "folders_parentId_idx" ON "folders"("parentId");
|
||||
|
||||
|
||||
BIN
prisma/prisma/dev.db
Normal file
BIN
prisma/prisma/dev.db
Normal file
Binary file not shown.
@@ -25,6 +25,7 @@ model User {
|
||||
dailyCheckboxes DailyCheckbox[]
|
||||
tasks Task[] @relation("TaskOwner")
|
||||
tags Tag[] @relation("TagOwner")
|
||||
folders Folder[] @relation("FolderOwner")
|
||||
|
||||
@@map("users")
|
||||
}
|
||||
@@ -72,6 +73,7 @@ model Tag {
|
||||
taskTags TaskTag[]
|
||||
primaryTasks Task[] @relation("PrimaryTag")
|
||||
noteTags NoteTag[]
|
||||
folders Folder[]
|
||||
|
||||
@@unique([name, ownerId]) // Un nom de tag unique par utilisateur
|
||||
@@map("tags")
|
||||
@@ -142,13 +144,33 @@ model Note {
|
||||
content String // Markdown content
|
||||
userId String
|
||||
taskId String? // Tâche associée à la note
|
||||
folderId String? // Dossier contenant la note
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
task Task? @relation(fields: [taskId], references: [id])
|
||||
folder Folder? @relation(fields: [folderId], references: [id])
|
||||
noteTags NoteTag[]
|
||||
}
|
||||
|
||||
model Folder {
|
||||
id String @id @default(cuid())
|
||||
name String
|
||||
userId String
|
||||
tagId String? // Tag associé au dossier
|
||||
parentId String? // Dossier parent pour sous-dossiers
|
||||
order Int @default(0)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
user User @relation("FolderOwner", fields: [userId], references: [id], onDelete: Cascade)
|
||||
tag Tag? @relation(fields: [tagId], references: [id])
|
||||
parent Folder? @relation("FolderHierarchy", fields: [parentId], references: [id], onDelete: Cascade)
|
||||
children Folder[] @relation("FolderHierarchy")
|
||||
notes Note[]
|
||||
|
||||
@@map("folders")
|
||||
}
|
||||
|
||||
model NoteTag {
|
||||
noteId String
|
||||
tagId String
|
||||
|
||||
Reference in New Issue
Block a user