diff --git a/data/data.qrc b/data/data.qrc index af00f26a1..2ac1879a5 100644 --- a/data/data.qrc +++ b/data/data.qrc @@ -7,6 +7,7 @@ schema/schema-13.sql schema/schema-14.sql schema/schema-15.sql + schema/schema-16.sql schema/device-schema.sql style/strawberry.css style/smartplaylistsearchterm.css diff --git a/data/schema/device-schema.sql b/data/schema/device-schema.sql index 575dec778..a903cb6bf 100644 --- a/data/schema/device-schema.sql +++ b/data/schema/device-schema.sql @@ -67,7 +67,20 @@ CREATE TABLE device_%deviceid_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -80,4 +93,4 @@ CREATE VIRTUAL TABLE device_%deviceid_fts USING fts5( tokenize = "unicode61 remove_diacritics 1" ); -UPDATE devices SET schema_version=3 WHERE ROWID=%deviceid; +UPDATE devices SET schema_version=4 WHERE ROWID=%deviceid; diff --git a/data/schema/schema-16.sql b/data/schema/schema-16.sql new file mode 100644 index 000000000..fe9874d38 --- /dev/null +++ b/data/schema/schema-16.sql @@ -0,0 +1,199 @@ +ALTER TABLE songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE subsonic_songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE tidal_artists_songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE tidal_albums_songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE tidal_songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE qobuz_artists_songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE qobuz_albums_songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE qobuz_songs ADD COLUMN musicbrainz_work_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN acoustid_fingerprint TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_album_artist_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_artist_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_original_artist_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_album_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_original_album_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_recording_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_track_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_disc_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_release_group_id TEXT; + +ALTER TABLE playlist_items ADD COLUMN musicbrainz_work_id TEXT; + +UPDATE schema_version SET version=16; diff --git a/data/schema/schema.sql b/data/schema/schema.sql index 189b51b95..de6612dde 100644 --- a/data/schema/schema.sql +++ b/data/schema/schema.sql @@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS schema_version ( DELETE FROM schema_version; -INSERT INTO schema_version (version) VALUES (15); +INSERT INTO schema_version (version) VALUES (16); CREATE TABLE IF NOT EXISTS directories ( path TEXT NOT NULL, @@ -75,7 +75,20 @@ CREATE TABLE IF NOT EXISTS songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -137,7 +150,20 @@ CREATE TABLE IF NOT EXISTS subsonic_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -199,7 +225,20 @@ CREATE TABLE IF NOT EXISTS tidal_artists_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -261,7 +300,20 @@ CREATE TABLE IF NOT EXISTS tidal_albums_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -323,7 +375,20 @@ CREATE TABLE IF NOT EXISTS tidal_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -385,7 +450,20 @@ CREATE TABLE IF NOT EXISTS qobuz_artists_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -447,7 +525,20 @@ CREATE TABLE IF NOT EXISTS qobuz_albums_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -509,7 +600,20 @@ CREATE TABLE IF NOT EXISTS qobuz_songs ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); @@ -591,7 +695,20 @@ CREATE TABLE IF NOT EXISTS playlist_items ( cue_path TEXT, - rating INTEGER DEFAULT -1 + rating INTEGER DEFAULT -1, + + acoustid_fingerprint TEXT, + + musicbrainz_album_artist_id TEXT, + musicbrainz_artist_id TEXT, + musicbrainz_original_artist_id TEXT, + musicbrainz_album_id TEXT, + musicbrainz_original_album_id TEXT, + musicbrainz_recording_id TEXT, + musicbrainz_track_id TEXT, + musicbrainz_disc_id TEXT, + musicbrainz_release_group_id TEXT, + musicbrainz_work_id TEXT ); diff --git a/src/core/database.cpp b/src/core/database.cpp index 1b0980adf..24a5d526b 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -48,7 +48,7 @@ #include "scopedtransaction.h" const char *Database::kDatabaseFilename = "strawberry.db"; -const int Database::kSchemaVersion = 15; +const int Database::kSchemaVersion = 16; const int Database::kMinSupportedSchemaVersion = 10; const char *Database::kMagicAllSongsTables = "%allsongstables";