diff --git a/init.sql b/init.sql index 73fe4ef72962ca6da48cbb540e3e52f329761fc9..2b2f9d39d01daab06a4cec8b3dcaf0a22e7e5d6c 100644 --- a/init.sql +++ b/init.sql @@ -27,29 +27,30 @@ CREATE TABLE IF NOT EXISTS kara ); CREATE TABLE IF NOT EXISTS kara_type - ( id INTEGER PRIMARY KEY AUTOINCREMENT + ( id INTEGER PRIMARY KEY , name TEXT NOT NULL ); -INSERT INTO kara_type (name) VALUES - ('vo'), ('va'), ('amv'), ('cdg'), ('autres'), ('vocaloid'); +INSERT INTO kara_type (id, name) VALUES + (1, 'vo'), (2, 'va'), (3, 'amv'), (4, 'cdg'), (5, 'autres'), ( 6, 'vocaloid'); CREATE TABLE IF NOT EXISTS kara_category - ( id INTEGER PRIMARY KEY AUTOINCREMENT + ( id INTEGER PRIMARY KEY , name TEXT NOT NULL ); -INSERT INTO kara_category (name) VALUES - ('ED/d*'), ('OP/d*'), ('AMV'), ('IS'), ('VOCA'), ('LIVE'), ('CDG'), ('PV'), - ('MV'); +INSERT INTO kara_category (id, name) VALUES + (1, 'ED/d*'), (2, 'OP/d*'), (3, 'AMV'), (4, 'IS'), (5, 'VOCA'), (6, 'LIVE'), + (7, 'CDG'), (8, 'PV'), (9, 'MV'); CREATE TABLE IF NOT EXISTS language - ( id INTEGER PRIMARY KEY AUTOINCREMENT + ( id INTEGER PRIMARY KEY , name TEXT NOT NULL ); -INSERT INTO language (name) VALUES - ('jp'), ('fr'), ('en'), ('ru'), ('sp'), ('it'), ('ch'), ('latin'), ('multi'), ('undefined'); +INSERT INTO language (id, name) VALUES + (1, 'jp'), (2, 'fr'), (3, 'en'), (4, 'ru'), (5, 'sp'), (6, 'it'), (7, 'ch'), + (8, 'latin'), (9, 'multi'), (10, 'undefined'); -- Playlists are sets of karas that are meant to be played together, kinda like -- M3U except it's stored in a SQL database. @@ -93,6 +94,31 @@ CREATE TABLE IF NOT EXISTS users INSERT INTO users (username, password) VALUES ('sakura', 'hashire'); +-- The stickers table +-- Used to implement the stickers MPD functionnality, documentation can be found +-- here: https://www.musicpd.org/doc/html/protocol.html#stickers. Need to be +-- authentified to use stickers commands. Support tags for `song` and `plt`. + +CREATE TABLE IF NOT EXISTS 'stickers' + ( id INTEGER PRIMARY KEY + , name TEXT NOT NULL UNIQUE + ); + +CREATE TABLE IF NOT EXISTS 'stickers.song' + ( id INTEGER REFERENCES kara ON DELETE CASCADE + , sticker INTEGER REFERENCES stickers ON DELETE CASCADE + , value INTEGER NOT NULL + , PRIMARY KEY (id, sticker) + ) WITHOUT ROWID; + +CREATE TABLE IF NOT EXISTS 'stickers.plt' + ( id INTEGER REFERENCES playlist ON DELETE CASCADE + , sticker INTEGER REFERENCES stickers ON DELETE CASCADE + , value INTEGER NOT NULL + , PRIMARY KEY (id, sticker) + ) WITHOUT ROWID; + + -- Some useful values: -- last_update is the timestamp of the last time the table of kara has been -- updated. This is so lektor doesn't have to read all kara in the filesystem,