diff --git a/app.py b/app.py index 96010d1..d608512 100644 --- a/app.py +++ b/app.py @@ -127,6 +127,12 @@ def get_projects(): return c.execute("SELECT id,name FROM projects ORDER BY name").fetchall() +def get_project_name(project_id: int) -> str: + with db() as c: + r = c.execute("SELECT name FROM projects WHERE id=?", (project_id,)).fetchone() + return r[0] if r else "" + + def get_prompts(): with db() as c: return c.execute("SELECT id,name,prompt FROM prompts ORDER BY name").fetchall() @@ -172,6 +178,29 @@ def add_project(name: str = Form(...)): return HTMLResponse("") +@app.post("/projects/update", response_class=HTMLResponse) +def rename_project(id: int = Form(...), name: str = Form(...)): + with db() as c: + c.execute("UPDATE projects SET name=? WHERE id=?", (name.strip(), id)) + return HTMLResponse("") + + +@app.post("/projects/{project_id}/delete", response_class=HTMLResponse) +def delete_project(project_id: int): + with db() as c: + default = c.execute("SELECT id FROM projects WHERE name='Default'").fetchone() + if not default: + c.execute("INSERT INTO projects(name, created_at) VALUES (?,?)", ("Default", now_iso())) + default_id = c.execute("SELECT id FROM projects WHERE name='Default'").fetchone()[0] + else: + default_id = default[0] + if project_id == default_id: + return HTMLResponse("") + c.execute("UPDATE documents SET project_id=? WHERE project_id=?", (default_id, project_id)) + c.execute("DELETE FROM projects WHERE id=?", (project_id,)) + return HTMLResponse("") + + @app.post("/upload", response_class=HTMLResponse) async def upload(project_id: int = Form(...), title: str = Form(""), file: UploadFile = File(...)): data = await file.read() @@ -222,10 +251,17 @@ def library(project_id: Optional[int] = None): p_opts = "" + "".join( [f"" for p in projects] ) + proj_opts = "".join([f"" for p in projects]) items = "".join( [ f"
" + f"Ansehen | Download .md" + f"" + f"" + f"" for d in docs ] ) @@ -275,6 +311,27 @@ def download_md(doc_id: int): return PlainTextResponse(d["content_md"], headers={"Content-Disposition": f"attachment; filename=document_{doc_id}.md"}) +@app.post("/document/{doc_id}/rename", response_class=HTMLResponse) +def rename_document(doc_id: int, title: str = Form(...)): + with db() as c: + c.execute("UPDATE documents SET title=? WHERE id=?", (title.strip(), doc_id)) + return HTMLResponse("") + + +@app.post("/document/{doc_id}/move", response_class=HTMLResponse) +def move_document(doc_id: int, project_id: int = Form(...)): + with db() as c: + c.execute("UPDATE documents SET project_id=? WHERE id=?", (project_id, doc_id)) + return HTMLResponse("") + + +@app.post("/document/{doc_id}/delete", response_class=HTMLResponse) +def delete_document(doc_id: int): + with db() as c: + c.execute("DELETE FROM documents WHERE id=?", (doc_id,)) + return HTMLResponse("") + + @app.get("/prompts", response_class=HTMLResponse) def prompts_page(): with db() as c: @@ -284,11 +341,20 @@ def prompts_page(): p_list = "".join( [ f"{(p['prompt'] or '').replace('<','<')}"
- f"