chore: document project-wide soft delete pattern and add deleted_by column to all tables

This commit is contained in:
2026-06-11 20:36:47 +00:00
parent d0e2075e6d
commit 9a93debfc9
37 changed files with 1690 additions and 266 deletions
+33 -3
View File
@@ -222,6 +222,7 @@ def store_attachment(file_bytes, original_filename, user_uid):
"thumbnail_name": thumbnail,
"created_at": datetime.now(timezone.utc).isoformat(),
"deleted_at": None,
"deleted_by": None,
}
)
return {
@@ -386,12 +387,17 @@ def delete_attachment(uid):
_delete_attachment_row(row)
def soft_delete_attachment(uid):
def soft_delete_attachment(uid, deleted_by="system"):
row = get_table("attachments").find_one(uid=uid)
if not row or row.get("deleted_at"):
return None
get_table("attachments").update(
{"uid": uid, "deleted_at": datetime.now(timezone.utc).isoformat()}, ["uid"]
{
"uid": uid,
"deleted_at": datetime.now(timezone.utc).isoformat(),
"deleted_by": deleted_by,
},
["uid"],
)
return row
@@ -400,10 +406,34 @@ def restore_attachment(uid):
row = get_table("attachments").find_one(uid=uid)
if not row or not row.get("deleted_at"):
return False
get_table("attachments").update({"uid": uid, "deleted_at": None}, ["uid"])
get_table("attachments").update(
{"uid": uid, "deleted_at": None, "deleted_by": None}, ["uid"]
)
return True
def soft_delete_target_attachments(target_type, target_uid, deleted_by):
stamp = datetime.now(timezone.utc).isoformat()
for row in get_table("attachments").find(
target_type=target_type, target_uid=target_uid, deleted_at=None
):
get_table("attachments").update(
{"uid": row["uid"], "deleted_at": stamp, "deleted_by": deleted_by}, ["uid"]
)
def soft_delete_attachments_for(target_type, target_uids, deleted_by):
from devplacepy.database import soft_delete_in
soft_delete_in(
"attachments",
"target_uid",
target_uids,
deleted_by,
target_type=target_type,
)
def delete_target_attachments(target_type, target_uid):
for row in get_table("attachments").find(
target_type=target_type, target_uid=target_uid