added more table creation scripts

This commit is contained in:
bsmith 2012-09-30 22:33:53 -04:00
parent 562eaea844
commit b86ec296fc
1 changed files with 87 additions and 0 deletions

View File

@ -35,6 +35,93 @@ CREATE TABLE jam_session_members (
ALTER TABLE jam_session_members ADD CONSTRAINT user_jam_session_uniqkey UNIQUE (user_id, jam_session_id);
CREATE TABLE connections (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE,
client_id VARCHAR(64) NOT NULL UNIQUE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- friendships
CREATE TABLE friendships (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE,
friend_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE friendships ADD CONSTRAINT user_friend_uniqkey UNIQUE (user_id, friend_id);
-- bands
CREATE TABLE bands (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(1024) NOT NULL,
-- add more fields later
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- genres
CREATE TABLE genres (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
description VARCHAR(1024) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- band -> genre mapping
CREATE TABLE bands_genres (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
band_id VARCHAR(64) REFERENCES bands(id) ON DELETE CASCADE,
genre_id VARCHAR(64) REFERENCES genres(id) ON DELETE CASCADE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE bands_genres ADD CONSTRAINT band_genre_uniqkey UNIQUE (band_id, genre_id);
-- musicians
CREATE TABLE musicians (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- musician -> band mapping
CREATE TABLE bands_musicians (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
band_id VARCHAR(64) REFERENCES bands(id) ON DELETE CASCADE,
musician_id VARCHAR(64) REFERENCES musicians(id) ON DELETE CASCADE,
is_admin BOOLEAN NOT NULL DEFAULT false,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE bands_musicians ADD CONSTRAINT band_musician_uniqkey UNIQUE (band_id, musician_id);
-- instruments
CREATE TABLE instruments (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
description VARCHAR(1024) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- musician -> instrument mapping
CREATE TABLE musicians_instruments (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
musician_id VARCHAR(64) REFERENCES musicians(id) ON DELETE CASCADE,
instrument_id VARCHAR(64) REFERENCES instruments(id) ON DELETE CASCADE,
proficiency_level SMALLINT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE musicians_instruments ADD CONSTRAINT musician_instrument_uniqkey UNIQUE (musician_id, instrument_id);
-- create a utility method to truncate all tables
CREATE OR REPLACE FUNCTION truncate_tables() RETURNS void AS $$