Database: Add *sort fields, bpm, mood, initial_key

Upgrade from schema version 20 to 21. This includes:

- six fields for sort tags
- new fields bpm, mood, initial_key

See https://github.com/strawberrymusicplayer/strawberry/pull/1779#pullrequestreview-3003042802
This commit is contained in:
Mark
2025-07-10 15:27:11 +02:00
committed by Jonas Kvinge
parent a47531d4ce
commit 2ddacf2f98
6 changed files with 203 additions and 17 deletions

View File

@@ -12,6 +12,7 @@
<file>schema/schema-18.sql</file> <file>schema/schema-18.sql</file>
<file>schema/schema-19.sql</file> <file>schema/schema-19.sql</file>
<file>schema/schema-20.sql</file> <file>schema/schema-20.sql</file>
<file>schema/schema-21.sql</file>
<file>schema/device-schema.sql</file> <file>schema/device-schema.sql</file>
<file>style/strawberry.css</file> <file>style/strawberry.css</file>
<file>style/smartplaylistsearchterm.css</file> <file>style/smartplaylistsearchterm.css</file>

View File

@@ -12,9 +12,13 @@ CREATE TABLE device_%deviceid_subdirectories (
CREATE TABLE device_%deviceid_songs ( CREATE TABLE device_%deviceid_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -22,7 +26,9 @@ CREATE TABLE device_%deviceid_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -86,7 +92,11 @@ CREATE TABLE device_%deviceid_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
@@ -94,4 +104,4 @@ CREATE INDEX idx_device_%deviceid_songs_album ON device_%deviceid_songs (album);
CREATE INDEX idx_device_%deviceid_songs_comp_artist ON device_%deviceid_songs (compilation_effective, artist); CREATE INDEX idx_device_%deviceid_songs_comp_artist ON device_%deviceid_songs (compilation_effective, artist);
UPDATE devices SET schema_version=5 WHERE ROWID=%deviceid; UPDATE devices SET schema_version=6 WHERE ROWID=%deviceid;

43
data/schema/schema-21.sql Normal file
View File

@@ -0,0 +1,43 @@
DROP INDEX IF EXISTS idx_albumartistsort;
DROP INDEX IF EXISTS idx_albumsort;
DROP INDEX IF EXISTS idx_artistsort;
DROP INDEX IF EXISTS idx_composersort;
DROP INDEX IF EXISTS idx_performersort;
DROP INDEX IF EXISTS idx_titlesort;
ALTER TABLE %allsongstables ADD COLUMN albumartistsort TEXT;
ALTER TABLE %allsongstables ADD COLUMN albumsort TEXT;
ALTER TABLE %allsongstables ADD COLUMN artistsort TEXT;
ALTER TABLE %allsongstables ADD COLUMN composersort TEXT;
ALTER TABLE %allsongstables ADD COLUMN performersort TEXT;
ALTER TABLE %allsongstables ADD COLUMN titlesort TEXT;
ALTER TABLE %allsongstables ADD COLUMN bpm REAL;
ALTER TABLE %allsongstables ADD COLUMN mood TEXT;
ALTER TABLE %allsongstables ADD COLUMN initial_key TEXT;
CREATE INDEX IF NOT EXISTS idx_albumartistsort ON songs (albumartistsort);
CREATE INDEX IF NOT EXISTS idx_albumsort ON songs (album);
CREATE INDEX IF NOT EXISTS idx_artistsort ON songs (artistsort);
CREATE INDEX IF NOT EXISTS idx_composersort ON songs (title);
CREATE INDEX IF NOT EXISTS idx_performersort ON songs (title);
CREATE INDEX IF NOT EXISTS idx_titlesort ON songs (title);
UPDATE schema_version SET version=21;

View File

@@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS schema_version (
DELETE FROM schema_version; DELETE FROM schema_version;
INSERT INTO schema_version (version) VALUES (20); INSERT INTO schema_version (version) VALUES (21);
CREATE TABLE IF NOT EXISTS directories ( CREATE TABLE IF NOT EXISTS directories (
path TEXT NOT NULL, path TEXT NOT NULL,
@@ -20,9 +20,13 @@ CREATE TABLE IF NOT EXISTS subdirectories (
CREATE TABLE IF NOT EXISTS songs ( CREATE TABLE IF NOT EXISTS songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -30,7 +34,9 @@ CREATE TABLE IF NOT EXISTS songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -94,16 +100,24 @@ CREATE TABLE IF NOT EXISTS songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS subsonic_songs ( CREATE TABLE IF NOT EXISTS subsonic_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -111,7 +125,9 @@ CREATE TABLE IF NOT EXISTS subsonic_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -175,16 +191,24 @@ CREATE TABLE IF NOT EXISTS subsonic_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS tidal_artists_songs ( CREATE TABLE IF NOT EXISTS tidal_artists_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -192,7 +216,9 @@ CREATE TABLE IF NOT EXISTS tidal_artists_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -256,16 +282,24 @@ CREATE TABLE IF NOT EXISTS tidal_artists_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS tidal_albums_songs ( CREATE TABLE IF NOT EXISTS tidal_albums_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -273,7 +307,9 @@ CREATE TABLE IF NOT EXISTS tidal_albums_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -337,16 +373,24 @@ CREATE TABLE IF NOT EXISTS tidal_albums_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS tidal_songs ( CREATE TABLE IF NOT EXISTS tidal_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -354,7 +398,9 @@ CREATE TABLE IF NOT EXISTS tidal_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -418,16 +464,24 @@ CREATE TABLE IF NOT EXISTS tidal_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS spotify_artists_songs ( CREATE TABLE IF NOT EXISTS spotify_artists_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -435,7 +489,9 @@ CREATE TABLE IF NOT EXISTS spotify_artists_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -499,16 +555,24 @@ CREATE TABLE IF NOT EXISTS spotify_artists_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS spotify_albums_songs ( CREATE TABLE IF NOT EXISTS spotify_albums_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -516,7 +580,9 @@ CREATE TABLE IF NOT EXISTS spotify_albums_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -580,16 +646,24 @@ CREATE TABLE IF NOT EXISTS spotify_albums_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS spotify_songs ( CREATE TABLE IF NOT EXISTS spotify_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -597,7 +671,9 @@ CREATE TABLE IF NOT EXISTS spotify_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -661,16 +737,24 @@ CREATE TABLE IF NOT EXISTS spotify_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS qobuz_artists_songs ( CREATE TABLE IF NOT EXISTS qobuz_artists_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -678,7 +762,9 @@ CREATE TABLE IF NOT EXISTS qobuz_artists_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -742,16 +828,24 @@ CREATE TABLE IF NOT EXISTS qobuz_artists_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS qobuz_albums_songs ( CREATE TABLE IF NOT EXISTS qobuz_albums_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -759,7 +853,9 @@ CREATE TABLE IF NOT EXISTS qobuz_albums_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -823,16 +919,24 @@ CREATE TABLE IF NOT EXISTS qobuz_albums_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
CREATE TABLE IF NOT EXISTS qobuz_songs ( CREATE TABLE IF NOT EXISTS qobuz_songs (
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER NOT NULL DEFAULT -1, track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1, disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1, year INTEGER NOT NULL DEFAULT -1,
@@ -840,7 +944,9 @@ CREATE TABLE IF NOT EXISTS qobuz_songs (
genre TEXT, genre TEXT,
compilation INTEGER NOT NULL DEFAULT 0, compilation INTEGER NOT NULL DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -904,7 +1010,11 @@ CREATE TABLE IF NOT EXISTS qobuz_songs (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
@@ -931,9 +1041,13 @@ CREATE TABLE IF NOT EXISTS playlist_items (
playlist_url TEXT, playlist_url TEXT,
title TEXT, title TEXT,
titlesort TEXT,
album TEXT, album TEXT,
albumsort TEXT,
artist TEXT, artist TEXT,
artistsort TEXT,
albumartist TEXT, albumartist TEXT,
albumartistsort TEXT,
track INTEGER, track INTEGER,
disc INTEGER, disc INTEGER,
year INTEGER, year INTEGER,
@@ -941,7 +1055,9 @@ CREATE TABLE IF NOT EXISTS playlist_items (
genre TEXT, genre TEXT,
compilation INTEGER DEFAULT 0, compilation INTEGER DEFAULT 0,
composer TEXT, composer TEXT,
composersort TEXT,
performer TEXT, performer TEXT,
performersort TEXT,
grouping TEXT, grouping TEXT,
comment TEXT, comment TEXT,
lyrics TEXT, lyrics TEXT,
@@ -1005,7 +1121,11 @@ CREATE TABLE IF NOT EXISTS playlist_items (
musicbrainz_work_id TEXT, musicbrainz_work_id TEXT,
ebur128_integrated_loudness_lufs REAL, ebur128_integrated_loudness_lufs REAL,
ebur128_loudness_range_lu REAL ebur128_loudness_range_lu REAL,
bpm REAL,
mood TEXT,
initial_key TEXT
); );
@@ -1032,10 +1152,22 @@ CREATE INDEX IF NOT EXISTS idx_comp_artist ON songs (compilation_effective, arti
CREATE INDEX IF NOT EXISTS idx_albumartist ON songs (albumartist); CREATE INDEX IF NOT EXISTS idx_albumartist ON songs (albumartist);
CREATE INDEX IF NOT EXISTS idx_albumartistsort ON songs (albumartistsort);
CREATE INDEX IF NOT EXISTS idx_artist ON songs (artist); CREATE INDEX IF NOT EXISTS idx_artist ON songs (artist);
CREATE INDEX IF NOT EXISTS idx_artistsort ON songs (artistsort);
CREATE INDEX IF NOT EXISTS idx_album ON songs (album); CREATE INDEX IF NOT EXISTS idx_album ON songs (album);
CREATE INDEX IF NOT EXISTS idx_albumsort ON songs (album);
CREATE INDEX IF NOT EXISTS idx_title ON songs (title); CREATE INDEX IF NOT EXISTS idx_title ON songs (title);
CREATE INDEX IF NOT EXISTS idx_titlesort ON songs (title);
CREATE INDEX IF NOT EXISTS idx_composersort ON songs (title);
CREATE INDEX IF NOT EXISTS idx_performersort ON songs (title);
CREATE VIEW IF NOT EXISTS duplicated_songs as select artist dup_artist, album dup_album, title dup_title from songs as inner_songs where artist != '' and album != '' and title != '' and unavailable = 0 group by artist, album , title having count(*) > 1; CREATE VIEW IF NOT EXISTS duplicated_songs as select artist dup_artist, album dup_album, title dup_title from songs as inner_songs where artist != '' and album != '' and title != '' and unavailable = 0 group by artist, album , title having count(*) > 1;

View File

@@ -50,7 +50,7 @@
using namespace Qt::Literals::StringLiterals; using namespace Qt::Literals::StringLiterals;
const int Database::kSchemaVersion = 20; const int Database::kSchemaVersion = 21;
namespace { namespace {
constexpr char kDatabaseFilename[] = "strawberry.db"; constexpr char kDatabaseFilename[] = "strawberry.db";

View File

@@ -41,7 +41,7 @@
using namespace Qt::Literals::StringLiterals; using namespace Qt::Literals::StringLiterals;
namespace { namespace {
constexpr int kDeviceSchemaVersion = 5; constexpr int kDeviceSchemaVersion = 6;
} }
DeviceDatabaseBackend::DeviceDatabaseBackend(QObject *parent) DeviceDatabaseBackend::DeviceDatabaseBackend(QObject *parent)