79 lines
1.7 KiB
SQL
79 lines
1.7 KiB
SQL
CREATE TABLE media_files (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
artist_id INTEGER,
|
|
album_id INTEGER,
|
|
play_count INTEGER NOT NULL DEFAULT 0,
|
|
comment VARCHAR DEFAULT ''
|
|
);
|
|
|
|
CREATE TABLE tags (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR UNIQUE NOT NULL
|
|
);
|
|
|
|
CREATE TABLE playlists (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
media_file_ids INTEGER[] NOT NULL,
|
|
mod_count INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
|
|
CREATE TABLE bookmarks (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR,
|
|
playlist_id INTEGER NOT NULL,
|
|
media_file_id INTEGER NOT NULL,
|
|
play_index INTEGER NOT NULL,
|
|
FOREIGN KEY (playlist_id) REFERENCES playlists(id),
|
|
FOREIGN KEY (media_file_id) REFERENCES media_files(id)
|
|
);
|
|
|
|
CREATE TABLE media_files_tags (
|
|
id SERIAL PRIMARY KEY,
|
|
media_file_id INTEGER,
|
|
tag_id INTEGER,
|
|
FOREIGN KEY (media_file_id) REFERENCES media_files(id),
|
|
FOREIGN KEY (tag_id) REFERENCES tags(id)
|
|
);
|
|
|
|
CREATE TABLE artists (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL
|
|
);
|
|
|
|
CREATE TABLE albums (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
year INTEGER
|
|
);
|
|
|
|
CREATE TABLE images (
|
|
id SERIAL PRIMARY KEY,
|
|
url VARCHAR
|
|
);
|
|
|
|
CREATE TABLE artists_images (
|
|
id SERIAL PRIMARY KEY,
|
|
artist_id INTEGER,
|
|
image_id INTEGER,
|
|
FOREIGN KEY (artist_id) REFERENCES artists (id),
|
|
FOREIGN KEY (image_id) REFERENCES images (id)
|
|
);
|
|
|
|
CREATE TABLE albums_images (
|
|
id SERIAL PRIMARY KEY,
|
|
album_id INTEGER,
|
|
image_id INTEGER,
|
|
FOREIGN KEY (album_id) REFERENCES albums (id),
|
|
FOREIGN KEY (image_id) REFERENCES images (id)
|
|
);
|
|
|
|
CREATE TABLE artists_albums (
|
|
artist_id INTEGER NOT NULL,
|
|
album_id INTEGER NOT NULL,
|
|
PRIMARY KEY (artist_id, album_id),
|
|
FOREIGN KEY (artist_id) REFERENCES artists (id),
|
|
FOREIGN KEY (album_id) REFERENCES albums (id)
|
|
);
|