modified: blueprints/sync_server.py

modified:   core/sync.py
This commit is contained in:
2026-06-23 17:20:06 -04:00
parent 3fb95c1617
commit fec74e24c5
2 changed files with 18 additions and 2 deletions

View File

@@ -34,6 +34,16 @@ def sync_push():
for d in data.get('deletions', []): for d in data.get('deletions', []):
et = d['entity_type'] et = d['entity_type']
eu = d['entity_uuid'] eu = d['entity_uuid']
# Log to server's sync_deletions so other pulling clients see it
existing = conn.execute(
"SELECT id FROM sync_deletions WHERE entity_type = ? AND entity_uuid = ?",
(et, eu)
).fetchone()
if not existing:
conn.execute(
"INSERT INTO sync_deletions (entity_type, entity_uuid, deleted_at) VALUES (?, ?, ?)",
(et, eu, synced_at)
)
if et == 'debtor': if et == 'debtor':
conn.execute("DELETE FROM debtors WHERE uuid = ?", (eu,)) conn.execute("DELETE FROM debtors WHERE uuid = ?", (eu,))
elif et == 'ticket': elif et == 'ticket':

View File

@@ -113,8 +113,9 @@ class SyncManager:
# Expenses (immutable, synced_at IS NULL) # Expenses (immutable, synced_at IS NULL)
expenses = conn.execute( expenses = conn.execute(
"SELECT uuid, date, description, amount FROM expenses WHERE synced_at IS NULL" "SELECT id, uuid, date, description, amount FROM expenses WHERE synced_at IS NULL"
).fetchall() ).fetchall()
expense_ids = [e[0] for e in expenses]
# Deletions (immutable, synced_at IS NULL) # Deletions (immutable, synced_at IS NULL)
deletions = conn.execute( deletions = conn.execute(
@@ -140,7 +141,7 @@ class SyncManager:
], ],
"tickets": ticket_payloads, "tickets": ticket_payloads,
"expenses": [ "expenses": [
{"uuid": e[0], "date": e[1], "description": e[2], "amount": e[3]} {"uuid": e[1], "date": e[2], "description": e[3], "amount": e[4]}
for e in expenses for e in expenses
], ],
"deletions": [ "deletions": [
@@ -162,6 +163,11 @@ class SyncManager:
"UPDATE sales SET synced_at = ? WHERE id = ?", "UPDATE sales SET synced_at = ? WHERE id = ?",
[(now, sid) for sid in sale_ids] [(now, sid) for sid in sale_ids]
) )
if expense_ids:
conn.executemany(
"UPDATE expenses SET synced_at = ? WHERE id = ?",
[(now, eid) for eid in expense_ids]
)
if deletions: if deletions:
conn.executemany( conn.executemany(
"UPDATE sync_deletions SET synced_at = ? WHERE entity_type = ? AND entity_uuid = ?", "UPDATE sync_deletions SET synced_at = ? WHERE entity_type = ? AND entity_uuid = ?",