Bedre tag sync

This commit is contained in:
2026-04-21 19:18:19 +02:00
parent ec3989e6a4
commit 545cdc6866
7 changed files with 94 additions and 37 deletions

View File

@@ -185,11 +185,17 @@ def push(
db.flush()
dance_id_map[key] = dance.id
# ── Sang-dans tags ────────────────────────────────────────────────────────
# ── Sang-dans tags — synkroniser fuldt per sang ──────────────────────────
# Slet eksisterende tags for sange der er med i push, genindsæt fra klient
synced_song_ids = set()
for sd in payload.song_dances:
song_id = song_id_map.get(sd.song_local_id)
if not song_id:
continue
if song_id not in synced_song_ids:
db.execute(_sa.text("DELETE FROM song_dances WHERE song_id=:sid"),
{"sid": song_id})
synced_song_ids.add(song_id)
level_id = level_map.get(sd.level_name.lower()) if sd.level_name else None
key = f"{sd.dance_name.lower()}|{level_id}"
dance_id = dance_id_map.get(key)
@@ -201,6 +207,13 @@ def push(
), {"id": str(uuid.uuid4()), "song_id": song_id,
"dance_id": dance_id, "dance_order": sd.dance_order})
# Sange pushet uden dans-tags — slet også på server
sent_local_ids = {sd.song_local_id for sd in payload.song_dances}
for local_id, song_id in song_id_map.items():
if local_id in sent_local_ids and song_id not in synced_song_ids:
db.execute(_sa.text("DELETE FROM song_dances WHERE song_id=:sid"),
{"sid": song_id})
for sa in payload.song_alts:
song_id = song_id_map.get(sa.song_local_id)
if not song_id: