CREATE TABLE recordings (
    id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
    description VARCHAR(200) NOT NULL,
    public BOOLEAN NOT NULL DEFAULT true,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE musicians_recordings (
    user_id VARCHAR(64) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE
);

ALTER TABLE musicians_recordings ADD CONSTRAINT musician_recording_uniqkey UNIQUE (user_id, recording_id);

CREATE TABLE bands_recordings (
    band_id VARCHAR(64) NOT NULL REFERENCES bands(id) ON DELETE CASCADE,
    recording_id VARCHAR(64) NOT NULL REFERENCES recordings(id) ON DELETE CASCADE
);

ALTER TABLE bands_recordings ADD CONSTRAINT band_recording_uniqkey UNIQUE (band_id, recording_id);