v1.0.169: prompts CRUD via VM API — /api/prompts, no more prompt.cfm dependency
This commit is contained in:
@@ -38,6 +38,47 @@ def seed_defaults():
|
||||
_ensure_classify_prompt()
|
||||
|
||||
|
||||
def list_by_role(role):
|
||||
"""List all versions for a role, newest first."""
|
||||
return query(
|
||||
"SELECT id, role, name, is_active, created_by, notes, created_at FROM prompts WHERE role=%s ORDER BY created_at DESC",
|
||||
(role,),
|
||||
)
|
||||
|
||||
|
||||
def save_new_version(role, name, body, notes="", is_active=True):
|
||||
"""Save new prompt version. Deactivates all others for this role, inserts new one."""
|
||||
if is_active:
|
||||
execute("UPDATE prompts SET is_active=false WHERE role=%s", (role,))
|
||||
return execute_returning(
|
||||
"""INSERT INTO prompts (role, name, body, is_active, notes)
|
||||
VALUES (%s, %s, %s, %s, %s) RETURNING *""",
|
||||
(role, name, body, is_active, notes),
|
||||
)
|
||||
|
||||
|
||||
def activate(prompt_id):
|
||||
"""Activate a prompt version (deactivates others for same role)."""
|
||||
row = query("SELECT role FROM prompts WHERE id=%s", (prompt_id,))
|
||||
if not row:
|
||||
return False
|
||||
role = row[0]["role"]
|
||||
execute("UPDATE prompts SET is_active=false WHERE role=%s", (role,))
|
||||
execute("UPDATE prompts SET is_active=true WHERE id=%s", (prompt_id,))
|
||||
return True
|
||||
|
||||
|
||||
def delete_prompt(prompt_id):
|
||||
"""Delete a prompt version (cannot delete active one)."""
|
||||
row = query("SELECT is_active FROM prompts WHERE id=%s", (prompt_id,))
|
||||
if not row:
|
||||
return False
|
||||
if row[0]["is_active"]:
|
||||
return False # cannot delete active
|
||||
execute("DELETE FROM prompts WHERE id=%s", (prompt_id,))
|
||||
return True
|
||||
|
||||
|
||||
def _ensure_classify_prompt():
|
||||
"""Ensure classify prompt exists (idempotent)."""
|
||||
existing = query("SELECT id FROM prompts WHERE role = 'classify' AND is_active = true LIMIT 1")
|
||||
|
||||
Reference in New Issue
Block a user