jam-cloud/db/up/users.sql

96 lines
3.7 KiB
MySQL
Raw Normal View History

2012-10-01 02:46:20 +00:00
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);
2012-11-04 03:56:08 +00:00
-- friend requests
CREATE TABLE friend_requests (
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,
accepted BOOLEAN,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE friend_requests ADD CONSTRAINT user_friend_request_uniqkey UNIQUE (user_id, friend_id);
2012-10-01 02:46:20 +00:00
-- bands
CREATE TABLE bands (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(1024) NOT NULL,
2012-11-04 03:56:08 +00:00
website VARCHAR(4000) NULL,
biography VARCHAR(4000) NOT NULL,
2012-10-01 02:46:20 +00:00
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(),
2012-11-04 13:32:14 +00:00
band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE,
genre_id VARCHAR(64) NOT NULL REFERENCES genres(id) ON DELETE CASCADE,
2012-10-01 02:46:20 +00:00
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);
-- musician -> band mapping
CREATE TABLE bands_musicians (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
2012-11-04 13:32:14 +00:00
band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE,
user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
2012-11-04 03:56:08 +00:00
admin BOOLEAN NOT NULL DEFAULT false,
2012-10-01 02:46:20 +00:00
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
2012-11-04 03:56:08 +00:00
ALTER TABLE bands_musicians ADD CONSTRAINT band_musician_uniqkey UNIQUE (band_id, user_id);
2012-10-01 02:46:20 +00:00
-- 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(),
2012-11-04 03:56:08 +00:00
user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
instrument_id VARCHAR(64) NOT NULL REFERENCES instruments(id) ON DELETE CASCADE,
2012-10-01 02:46:20 +00:00
proficiency_level SMALLINT NOT NULL,
2012-11-04 03:56:08 +00:00
priority SMALLINT NOT NULL DEFAULT 1,
2012-10-01 02:46:20 +00:00
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
2012-11-04 03:56:08 +00:00
ALTER TABLE musicians_instruments ADD CONSTRAINT musician_instrument_uniqkey UNIQUE (user_id, instrument_id);
-- add musician flag to users table
ALTER TABLE users ADD COLUMN musician BOOLEAN NOT NULL DEFAULT false;