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', []):
|
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':
|
||||||
|
|||||||
10
core/sync.py
10
core/sync.py
@@ -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 = ?",
|
||||||
|
|||||||
Reference in New Issue
Block a user