modified: blueprints/sync_server.py
modified: core/sync.py
This commit is contained in:
@@ -34,6 +34,16 @@ def sync_push():
|
||||
for d in data.get('deletions', []):
|
||||
et = d['entity_type']
|
||||
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':
|
||||
conn.execute("DELETE FROM debtors WHERE uuid = ?", (eu,))
|
||||
elif et == 'ticket':
|
||||
|
||||
10
core/sync.py
10
core/sync.py
@@ -113,8 +113,9 @@ class SyncManager:
|
||||
|
||||
# Expenses (immutable, synced_at IS NULL)
|
||||
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()
|
||||
expense_ids = [e[0] for e in expenses]
|
||||
|
||||
# Deletions (immutable, synced_at IS NULL)
|
||||
deletions = conn.execute(
|
||||
@@ -140,7 +141,7 @@ class SyncManager:
|
||||
],
|
||||
"tickets": ticket_payloads,
|
||||
"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
|
||||
],
|
||||
"deletions": [
|
||||
@@ -162,6 +163,11 @@ class SyncManager:
|
||||
"UPDATE sales SET synced_at = ? WHERE id = ?",
|
||||
[(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:
|
||||
conn.executemany(
|
||||
"UPDATE sync_deletions SET synced_at = ? WHERE entity_type = ? AND entity_uuid = ?",
|
||||
|
||||
Reference in New Issue
Block a user