From b86ec296fcccc56da33e27cf445cd30fefd81eb9 Mon Sep 17 00:00:00 2001 From: bsmith Date: Sun, 30 Sep 2012 22:33:53 -0400 Subject: [PATCH] added more table creation scripts --- up/sessions.sql | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/up/sessions.sql b/up/sessions.sql index e5a30c132..e1eaa0351 100644 --- a/up/sessions.sql +++ b/up/sessions.sql @@ -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 $$