Spaces:
Sleeping
Sleeping
Commit
·
cddfa37
1
Parent(s):
e0a78e0
Add delete note
Browse files- app/api/notes/notes_delete.py +19 -0
- app/main.py +2 -1
- app/services/folder_store.py +11 -0
- app/services/note_store.py +5 -1
app/api/notes/notes_delete.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import APIRouter, HTTPException
|
| 2 |
+
from app.services.note_store import get_note, delete_note
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
router = APIRouter(prefix="/notes", tags=["notes"])
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
@router.delete("/{note_id}")
|
| 9 |
+
def delete_note_api(note_id: str):
|
| 10 |
+
note = get_note(note_id)
|
| 11 |
+
if not note:
|
| 12 |
+
raise HTTPException(status_code=404, detail="Note not found")
|
| 13 |
+
|
| 14 |
+
delete_note(note_id)
|
| 15 |
+
|
| 16 |
+
return {
|
| 17 |
+
"note_id": note_id,
|
| 18 |
+
"deleted": True
|
| 19 |
+
}
|
app/main.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
from fastapi import FastAPI
|
| 2 |
-
from app.api.notes import notes_text, notes_audio, notes_text_internal, notes_get, notes_update, notes_regenerate, notes_events, internal_notes
|
| 3 |
from app.api.folders import folders_create, folders_get, folders_update, folders_delete
|
| 4 |
|
| 5 |
app = FastAPI(title="Note Service API")
|
|
@@ -10,6 +10,7 @@ app.include_router(notes_audio.router)
|
|
| 10 |
app.include_router(notes_text_internal.router)
|
| 11 |
app.include_router(notes_get.router)
|
| 12 |
app.include_router(notes_update.router)
|
|
|
|
| 13 |
app.include_router(notes_regenerate.router)
|
| 14 |
app.include_router(notes_events.router)
|
| 15 |
app.include_router(internal_notes.router)
|
|
|
|
| 1 |
from fastapi import FastAPI
|
| 2 |
+
from app.api.notes import notes_text, notes_audio, notes_text_internal, notes_get, notes_update, notes_delete, notes_regenerate, notes_events, internal_notes
|
| 3 |
from app.api.folders import folders_create, folders_get, folders_update, folders_delete
|
| 4 |
|
| 5 |
app = FastAPI(title="Note Service API")
|
|
|
|
| 10 |
app.include_router(notes_text_internal.router)
|
| 11 |
app.include_router(notes_get.router)
|
| 12 |
app.include_router(notes_update.router)
|
| 13 |
+
app.include_router(notes_delete.router)
|
| 14 |
app.include_router(notes_regenerate.router)
|
| 15 |
app.include_router(notes_events.router)
|
| 16 |
app.include_router(internal_notes.router)
|
app/services/folder_store.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
from app.infra.firebase import db
|
| 2 |
|
| 3 |
COL = "folders"
|
|
|
|
| 4 |
|
| 5 |
def create_folder(folder: dict):
|
| 6 |
db.collection(COL).document(folder["folder_id"]).set(folder)
|
|
@@ -20,4 +21,14 @@ def update_folder(folder_id: str, data: dict):
|
|
| 20 |
|
| 21 |
|
| 22 |
def delete_folder(folder_id: str):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
db.collection(COL).document(folder_id).delete()
|
|
|
|
| 1 |
from app.infra.firebase import db
|
| 2 |
|
| 3 |
COL = "folders"
|
| 4 |
+
NOTES_COL = "notes"
|
| 5 |
|
| 6 |
def create_folder(folder: dict):
|
| 7 |
db.collection(COL).document(folder["folder_id"]).set(folder)
|
|
|
|
| 21 |
|
| 22 |
|
| 23 |
def delete_folder(folder_id: str):
|
| 24 |
+
# Set folder_id về None cho các note thuộc folder này
|
| 25 |
+
notes_query = db.collection(NOTES_COL).where("folder_id", "==", folder_id)
|
| 26 |
+
batch = db.batch()
|
| 27 |
+
|
| 28 |
+
for note_doc in notes_query.stream():
|
| 29 |
+
batch.update(note_doc.reference, {"folder_id": None})
|
| 30 |
+
|
| 31 |
+
batch.commit()
|
| 32 |
+
|
| 33 |
+
# Xóa folder
|
| 34 |
db.collection(COL).document(folder_id).delete()
|
app/services/note_store.py
CHANGED
|
@@ -23,4 +23,8 @@ def list_notes(folder_id: str | None = None):
|
|
| 23 |
q = db.collection(COL)
|
| 24 |
if folder_id:
|
| 25 |
q = q.where("folder_id", "==", folder_id)
|
| 26 |
-
return [d.to_dict() for d in q.stream()]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
q = db.collection(COL)
|
| 24 |
if folder_id:
|
| 25 |
q = q.where("folder_id", "==", folder_id)
|
| 26 |
+
return [d.to_dict() for d in q.stream()]
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
def delete_note(note_id: str):
|
| 30 |
+
db.collection(COL).document(note_id).delete()
|