mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-03 20:13:02 +00:00
link playlists to a userid
+ fix favorites foreign key + add migration to add userid foreign key to playlists table
This commit is contained in:
@@ -83,15 +83,79 @@ class _4AddUserIdToFavoritesTable(Migration):
|
||||
@staticmethod
|
||||
def migrate():
|
||||
# check if userid column exists
|
||||
exists_sql = "select count(*) from pragma_table_info('favorites') where name = 'userid'"
|
||||
sql = "ALTER TABLE favorites ADD userid INTEGER NOT NULL DEFAULT 1 REFERENCES users(id) ON DELETE CASCADE"
|
||||
exists_sql = (
|
||||
"select count(*) from pragma_table_info('favorites') where name = 'userid'"
|
||||
)
|
||||
sql = """
|
||||
ALTER TABLE favorites ADD userid INTEGER NOT NULL DEFAULT 1;
|
||||
ALTER TABLE favorites RENAME TO _favorites;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS favorites (
|
||||
id integer PRIMARY KEY,
|
||||
hash text not null,
|
||||
type text not null,
|
||||
timestamp integer not null default 0,
|
||||
userid integer not null,
|
||||
constraint fk_users foreign key (userid) references users(id) on delete cascade
|
||||
);
|
||||
|
||||
INSERT INTO favorites SELECT * FROM _favorites;
|
||||
DROP TABLE _favorites;
|
||||
"""
|
||||
|
||||
with SQLiteManager(userdata_db=True) as cur:
|
||||
data = cur.execute(exists_sql)
|
||||
data = data.fetchone()
|
||||
|
||||
if data[0] == 1:
|
||||
return# INFO: column already exists
|
||||
return # INFO: column already exists
|
||||
|
||||
cur.executescript(sql)
|
||||
|
||||
|
||||
|
||||
class _5AddUserIdToPlaylistsTable(Migration):
|
||||
"""
|
||||
Adds a userid column to the playlists table.
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def migrate():
|
||||
# check if userid column exists
|
||||
exists_sql = (
|
||||
"select count(*) from pragma_table_info('playlists') where name = 'userid'"
|
||||
)
|
||||
|
||||
# Add the userid column to the playlists table
|
||||
# Rename the old table to _playlists
|
||||
# Create a new playlists table with the userid column
|
||||
# Then, copy the data from the old table to the new table
|
||||
# Finally, drop the old table
|
||||
sql = """
|
||||
ALTER TABLE playlists ADD userid INTEGER NOT NULL DEFAULT 1;
|
||||
ALTER TABLE playlists RENAME TO _playlists;
|
||||
CREATE TABLE IF NOT EXISTS playlists (
|
||||
id integer PRIMARY KEY,
|
||||
image text,
|
||||
last_updated text not null,
|
||||
name text not null,
|
||||
settings text,
|
||||
trackhashes text,
|
||||
userid integer not null,
|
||||
constraint fk_users foreign key (userid) references users(id) on delete cascade
|
||||
);
|
||||
|
||||
INSERT INTO playlists SELECT * FROM _playlists;
|
||||
DROP TABLE _playlists;
|
||||
"""
|
||||
|
||||
with SQLiteManager(userdata_db=True) as cur:
|
||||
# INFO: Check if the column already exists
|
||||
data = cur.execute(exists_sql)
|
||||
data = data.fetchone()
|
||||
|
||||
# INFO: If the column already exists, return
|
||||
if data[0] == 1:
|
||||
return # INFO: column already exists
|
||||
|
||||
# INFO: Execute the sql
|
||||
cur.executescript(sql)
|
||||
|
||||
Reference in New Issue
Block a user