Initial schema.
This commit is contained in:
parent
8e196e0c84
commit
b8c4054e09
10
service/README.md
Normal file
10
service/README.md
Normal file
@ -0,0 +1,10 @@
|
||||
## Database
|
||||
|
||||
Uses [db-migrate][http://db-migrate.readthedocs.org/en/latest/] to manage
|
||||
database migrations. Migration scripts live if `src/main/db`.
|
||||
|
||||
Database environment configuration lives in `database.json`.
|
||||
|
||||
To initialize a new database do:
|
||||
|
||||
db-migrate -m src/main/db up
|
5
service/database.json
Normal file
5
service/database.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"defaultEnv": "dev",
|
||||
"sql-file": true,
|
||||
"dev": "postgres://jonathan@localhost/wdiwtlt"
|
||||
}
|
30
service/src/main/db/20151209054632-initial-schema.js
Normal file
30
service/src/main/db/20151209054632-initial-schema.js
Normal file
@ -0,0 +1,30 @@
|
||||
var dbm = global.dbm || require('db-migrate');
|
||||
var type = dbm.dataType;
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
exports.up = function(db, callback) {
|
||||
var filePath = path.join(__dirname + '/sqls/20151209054632-initial-schema-up.sql');
|
||||
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
||||
if (err) return callback(err);
|
||||
console.log('received data: ' + data);
|
||||
|
||||
db.runSql(data, function(err) {
|
||||
if (err) return callback(err);
|
||||
callback();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function(db, callback) {
|
||||
var filePath = path.join(__dirname + '/sqls/20151209054632-initial-schema-down.sql');
|
||||
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
||||
if (err) return callback(err);
|
||||
console.log('received data: ' + data);
|
||||
|
||||
db.runSql(data, function(err) {
|
||||
if (err) return callback(err);
|
||||
callback();
|
||||
});
|
||||
});
|
||||
};
|
@ -0,0 +1,10 @@
|
||||
DROP TABLE artists_albums;
|
||||
DROP TABLE albums_images;
|
||||
DROP TABLE artists_images;
|
||||
DROP TABLE albums;
|
||||
DROP TABLE artists;
|
||||
DROP TABLE media_files_tags;
|
||||
DROP TABLE bookmarks;
|
||||
DROP TABLE playlists;
|
||||
DROP TABLE tags;
|
||||
DROP TABLE media_files;
|
@ -0,0 +1,77 @@
|
||||
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
|
||||
);
|
||||
|
||||
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)
|
||||
);
|
Loading…
Reference in New Issue
Block a user