strawberry-audio-player-win.../data/schema/schema.sql

224 lines
5.3 KiB
MySQL
Raw Normal View History

2018-08-09 18:10:03 +02:00
CREATE TABLE IF NOT EXISTS schema_version (
2018-02-27 18:06:05 +01:00
version INTEGER NOT NULL
);
2018-08-15 01:28:37 +02:00
2018-08-09 18:10:03 +02:00
DELETE FROM schema_version;
2018-08-15 01:28:37 +02:00
INSERT INTO schema_version (version) VALUES (2);
2018-02-27 18:06:05 +01:00
2018-08-09 18:10:03 +02:00
CREATE TABLE IF NOT EXISTS directories (
2018-02-27 18:06:05 +01:00
path TEXT NOT NULL,
subdirs INTEGER NOT NULL
);
2018-08-09 18:10:03 +02:00
CREATE TABLE IF NOT EXISTS subdirectories (
2018-02-27 18:06:05 +01:00
directory_id INTEGER NOT NULL,
path TEXT NOT NULL,
mtime INTEGER NOT NULL
);
2018-08-09 18:10:03 +02:00
CREATE TABLE IF NOT EXISTS songs (
2018-02-27 18:06:05 +01:00
/* Metadata from taglib */
title TEXT NOT NULL,
album TEXT NOT NULL,
artist TEXT NOT NULL,
albumartist TEXT NOT NULL,
track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1,
originalyear INTEGER NOT NULL DEFAULT 0,
genre TEXT NOT NULL,
compilation INTEGER NOT NULL DEFAULT -1,
composer TEXT NOT NULL,
performer TEXT NOT NULL,
grouping TEXT NOT NULL,
comment TEXT NOT NULL,
lyrics TEXT NOT NULL,
2018-02-27 18:06:05 +01:00
beginning INTEGER NOT NULL DEFAULT 0,
length INTEGER NOT NULL DEFAULT 0,
bitrate INTEGER NOT NULL DEFAULT 0,
samplerate INTEGER NOT NULL DEFAULT 0,
bitdepth INTEGER NOT NULL DEFAULT 0,
/* Information about the file on disk */
directory_id INTEGER NOT NULL,
filename TEXT NOT NULL,
filetype INTEGER NOT NULL DEFAULT 0,
filesize INTEGER NOT NULL,
mtime INTEGER NOT NULL,
ctime INTEGER NOT NULL,
unavailable INTEGER DEFAULT 0,
/* Other */
playcount INTEGER NOT NULL DEFAULT 0,
skipcount INTEGER NOT NULL DEFAULT 0,
lastplayed INTEGER NOT NULL DEFAULT 0,
compilation_detected INTEGER DEFAULT 0,
compilation_on INTEGER NOT NULL DEFAULT 0,
compilation_off INTEGER NOT NULL DEFAULT 0,
compilation_effective INTEGER NOT NULL DEFAULT 0,
art_automatic TEXT,
art_manual TEXT,
effective_albumartist TEXT,
effective_originalyear INTEGER NOT NULL DEFAULT 0,
2018-08-09 18:10:03 +02:00
2018-02-27 18:06:05 +01:00
cue_path TEXT
);
2018-08-09 18:10:03 +02:00
CREATE TABLE IF NOT EXISTS playlists (
2018-02-27 18:06:05 +01:00
name TEXT NOT NULL,
last_played INTEGER NOT NULL DEFAULT -1,
ui_order INTEGER NOT NULL DEFAULT 0,
special_type TEXT,
ui_path TEXT,
is_favorite INTEGER NOT NULL DEFAULT 0
);
2018-08-09 18:10:03 +02:00
CREATE TABLE IF NOT EXISTS playlist_items (
2018-02-27 18:06:05 +01:00
playlist INTEGER NOT NULL,
type TEXT NOT NULL,
collection_id INTEGER,
2018-08-09 18:10:03 +02:00
internet_service TEXT,
2018-02-27 18:06:05 +01:00
url TEXT,
/* Metadata from taglib */
title TEXT NOT NULL,
album TEXT NOT NULL,
artist TEXT NOT NULL,
albumartist TEXT NOT NULL,
track INTEGER NOT NULL DEFAULT -1,
disc INTEGER NOT NULL DEFAULT -1,
year INTEGER NOT NULL DEFAULT -1,
originalyear INTEGER NOT NULL DEFAULT 0,
genre TEXT NOT NULL,
compilation INTEGER NOT NULL DEFAULT -1,
composer TEXT NOT NULL,
performer TEXT NOT NULL,
grouping TEXT NOT NULL,
comment TEXT NOT NULL,
lyrics TEXT NOT NULL,
2018-02-27 18:06:05 +01:00
beginning INTEGER NOT NULL DEFAULT 0,
length INTEGER NOT NULL DEFAULT 0,
bitrate INTEGER NOT NULL DEFAULT 0,
samplerate INTEGER NOT NULL DEFAULT 0,
bitdepth INTEGER NOT NULL DEFAULT 0,
/* Information about the file on disk */
directory_id INTEGER,
filename TEXT,
filetype INTEGER NOT NULL DEFAULT 0,
filesize INTEGER,
mtime INTEGER,
ctime INTEGER,
unavailable INTEGER DEFAULT 0,
/* Other */
playcount INTEGER NOT NULL DEFAULT 0,
skipcount INTEGER NOT NULL DEFAULT 0,
lastplayed INTEGER NOT NULL DEFAULT 0,
compilation_detected INTEGER DEFAULT 0,
compilation_on INTEGER NOT NULL DEFAULT 0,
compilation_off INTEGER NOT NULL DEFAULT 0,
compilation_effective INTEGER NOT NULL DEFAULT 0,
art_automatic TEXT,
art_manual TEXT,
effective_albumartist TEXT,
effective_originalyear INTEGER NOT NULL DEFAULT 0,
cue_path TEXT
);
2018-08-09 18:10:03 +02:00
CREATE TABLE IF NOT EXISTS devices (
2018-02-27 18:06:05 +01:00
unique_id TEXT NOT NULL,
friendly_name TEXT,
size INTEGER,
icon TEXT,
schema_version INTEGER NOT NULL DEFAULT 0,
transcode_mode NOT NULL DEFAULT 3,
transcode_format NOT NULL DEFAULT 5
);
2018-08-09 18:10:03 +02:00
CREATE INDEX IF NOT EXISTS idx_filename ON songs (filename);
2018-02-27 18:06:05 +01:00
2018-08-09 18:10:03 +02:00
CREATE INDEX IF NOT EXISTS idx_comp_artist ON songs (compilation_effective, artist);
2018-02-27 18:06:05 +01:00
2018-08-09 18:10:03 +02:00
CREATE INDEX IF NOT EXISTS idx_album ON songs (album);
2018-02-27 18:06:05 +01:00
2018-08-09 18:10:03 +02:00
CREATE INDEX IF NOT EXISTS idx_title ON songs (title);
2018-02-27 18:06:05 +01:00
2018-08-09 18:10:03 +02:00
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;
2018-02-27 18:06:05 +01:00
2018-08-09 18:10:03 +02:00
CREATE VIRTUAL TABLE IF NOT EXISTS songs_fts USING fts3(
2018-02-27 18:06:05 +01:00
ftstitle,
ftsalbum,
ftsartist,
ftsalbumartist,
ftscomposer,
ftsperformer,
ftsgrouping,
ftsgenre,
ftscomment,
tokenize=unicode
);
2018-08-09 18:10:03 +02:00
CREATE VIRTUAL TABLE IF NOT EXISTS playlist_items_fts_ USING fts3(
2018-02-27 18:06:05 +01:00
ftstitle,
ftsalbum,
ftsartist,
ftsalbumartist,
ftscomposer,
ftsperformer,
ftsgrouping,
ftsgenre,
ftscomment,
tokenize=unicode
);
2018-08-09 18:10:03 +02:00
CREATE VIRTUAL TABLE IF NOT EXISTS %allsongstables_fts USING fts3(
2018-02-27 18:06:05 +01:00
ftstitle,
ftsalbum,
ftsartist,
ftsalbumartist,
ftscomposer,
ftsperformer,
ftsgrouping,
ftsgenre,
ftscomment,
tokenize=unicode
);
2018-08-09 18:10:03 +02:00
INSERT INTO songs_fts (ROWID, ftstitle, ftsalbum, ftsartist, ftsalbumartist, ftscomposer, ftsperformer, ftsgrouping, ftsgenre, ftscomment)
2018-02-27 18:06:05 +01:00
SELECT ROWID, title, album, artist, albumartist, composer, performer, grouping, genre, comment FROM songs;
INSERT INTO %allsongstables_fts (ROWID, ftstitle, ftsalbum, ftsartist, ftsalbumartist, ftscomposer, ftsperformer, ftsgrouping, ftsgenre, ftscomment)
SELECT ROWID, title, album, artist, albumartist, composer, performer, grouping, genre, comment FROM %allsongstables;