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";