fix: route admin_edit through KnowledgeRepository.update instead of raw SQL
This commit is contained in:
parent
7e0cb80ed2
commit
471982d3f9
2 changed files with 13 additions and 6 deletions
|
|
@ -224,18 +224,14 @@ async def admin_edit(
|
||||||
conn: duckdb.DuckDBPyConnection = Depends(_get_db),
|
conn: duckdb.DuckDBPyConnection = Depends(_get_db),
|
||||||
):
|
):
|
||||||
repo = KnowledgeRepository(conn)
|
repo = KnowledgeRepository(conn)
|
||||||
item = _get_item_or_404(repo, item_id)
|
_get_item_or_404(repo, item_id)
|
||||||
# Direct update
|
|
||||||
updates = {}
|
updates = {}
|
||||||
if request.title is not None:
|
if request.title is not None:
|
||||||
updates["title"] = request.title
|
updates["title"] = request.title
|
||||||
if request.content is not None:
|
if request.content is not None:
|
||||||
updates["content"] = request.content
|
updates["content"] = request.content
|
||||||
if updates:
|
if updates:
|
||||||
from datetime import datetime, timezone
|
repo.update(item_id, **updates)
|
||||||
set_clause = ", ".join(f"{k} = ?" for k in updates)
|
|
||||||
values = list(updates.values()) + [datetime.now(timezone.utc), item_id]
|
|
||||||
conn.execute(f"UPDATE knowledge_items SET {set_clause}, updated_at = ? WHERE id = ?", values)
|
|
||||||
_audit_action(conn, user["email"], "edit", item_id, updates)
|
_audit_action(conn, user["email"], "edit", item_id, updates)
|
||||||
return {"id": item_id, "updated": list(updates.keys())}
|
return {"id": item_id, "updated": list(updates.keys())}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,17 @@ class KnowledgeRepository:
|
||||||
json.dumps(tags) if tags else None, status, now, now],
|
json.dumps(tags) if tags else None, status, now, now],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def update(self, item_id: str, **fields) -> None:
|
||||||
|
if not fields:
|
||||||
|
return
|
||||||
|
now = datetime.now(timezone.utc)
|
||||||
|
set_clause = ", ".join(f"{k} = ?" for k in fields)
|
||||||
|
values = list(fields.values()) + [now, item_id]
|
||||||
|
self.conn.execute(
|
||||||
|
f"UPDATE knowledge_items SET {set_clause}, updated_at = ? WHERE id = ?",
|
||||||
|
values,
|
||||||
|
)
|
||||||
|
|
||||||
def update_status(self, item_id: str, status: str) -> None:
|
def update_status(self, item_id: str, status: str) -> None:
|
||||||
now = datetime.now(timezone.utc)
|
now = datetime.now(timezone.utc)
|
||||||
self.conn.execute(
|
self.conn.execute(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue