Bedre tag sync
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user