Sync alternativer
This commit is contained in:
@@ -189,7 +189,7 @@ class SyncManager:
|
||||
song_alts = []
|
||||
for row in conn.execute("""
|
||||
SELECT sad.song_id, d.name as dance_name,
|
||||
dl.name as level_name, sad.note
|
||||
dl.name as level_name, sad.note, sad.user_rating
|
||||
FROM song_alt_dances sad
|
||||
JOIN dances d ON d.id = sad.dance_id
|
||||
LEFT JOIN dance_levels dl ON dl.id = d.level_id
|
||||
@@ -199,6 +199,7 @@ class SyncManager:
|
||||
"dance_name": row["dance_name"],
|
||||
"level_name": row["level_name"] or "",
|
||||
"note": row["note"] or "",
|
||||
"user_rating": row["user_rating"],
|
||||
})
|
||||
|
||||
# Playlister — alle ikke-slettede
|
||||
@@ -480,6 +481,54 @@ class SyncManager:
|
||||
song_data.get("dance_override","") or ""))
|
||||
position += 1
|
||||
|
||||
# Gem community alternativ-danse lokalt
|
||||
conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS community_alt_dances ("
|
||||
"id TEXT PRIMARY KEY, song_id TEXT NOT NULL, dance_id INTEGER NOT NULL, "
|
||||
"avg_rating REAL NOT NULL DEFAULT 0, rating_count INTEGER NOT NULL DEFAULT 0, "
|
||||
"my_rating INTEGER, UNIQUE(song_id, dance_id))"
|
||||
)
|
||||
for ca in data.get("community_alts", []):
|
||||
if not ca.get("dance_name"):
|
||||
continue
|
||||
song_row = None
|
||||
if ca.get("song_mbid"):
|
||||
song_row = conn.execute(
|
||||
"SELECT id FROM songs WHERE mbid=?", (ca["song_mbid"],)
|
||||
).fetchone()
|
||||
if not song_row and ca.get("song_title"):
|
||||
song_row = conn.execute(
|
||||
"SELECT id FROM songs WHERE title=? AND artist=?",
|
||||
(ca["song_title"], ca.get("song_artist", ""))
|
||||
).fetchone()
|
||||
if not song_row:
|
||||
continue
|
||||
song_id = song_row["id"]
|
||||
dance_row = conn.execute(
|
||||
"SELECT id FROM dances WHERE name=? COLLATE NOCASE LIMIT 1",
|
||||
(ca["dance_name"],)
|
||||
).fetchone()
|
||||
if not dance_row:
|
||||
cur = conn.execute(
|
||||
"INSERT OR IGNORE INTO dances (name) VALUES (?)", (ca["dance_name"],)
|
||||
)
|
||||
dance_id = cur.lastrowid
|
||||
else:
|
||||
dance_id = dance_row["id"]
|
||||
if not dance_id:
|
||||
continue
|
||||
conn.execute(
|
||||
"INSERT INTO community_alt_dances "
|
||||
"(id, song_id, dance_id, avg_rating, rating_count, my_rating) "
|
||||
"VALUES (?,?,?,?,?,?) "
|
||||
"ON CONFLICT(song_id, dance_id) DO UPDATE SET "
|
||||
"avg_rating=excluded.avg_rating, rating_count=excluded.rating_count, "
|
||||
"my_rating=COALESCE(excluded.my_rating, my_rating)",
|
||||
(str(uuid.uuid4()), song_id, dance_id,
|
||||
ca.get("avg_rating", 0), ca.get("rating_count", 0),
|
||||
ca.get("my_rating"))
|
||||
)
|
||||
|
||||
# Importer sang-dans tags fra server
|
||||
for st in data.get("song_tags", []):
|
||||
server_song_id = st.get("song_id", "")
|
||||
|
||||
Reference in New Issue
Block a user