BEGIN; INSERT INTO version_history (component, from_version, to_version, author) VALUES ('SUBATHON', 0, 1, 'Initial Creation'); CREATE TABLE subathons( subathon_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, communityid INTEGER NOT NULL REFERENCES communities(communityid) ON DELETE CASCADE ON UPDATE CASCADE, started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), initial_time INTEGER NOT NULL, name TEXT, sub1_score NUMERIC NOT NULL DEFAULT 1, sub2_score NUMERIC NOT NULL DEFAULT 2, sub3_score NUMERIC NOT NULL DEFAULT 6, bit_score NUMERIC NOT NULL, score_time NUMERIC NOT NULL, duration INTEGER NOT NULL DEFAULT 0, timecap INTEGER, ended_at TIMESTAMPTZ ); CREATE TABLE running_subathons( subathon_id INTEGER PRIMARY KEY REFERENCES subathons(subathon_id), last_started TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE subathon_contributions( contribution_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, subathon_id INTEGER NOT NULL REFERENCES subathons(subathon_id) ON DELETE CASCADE, profileid INTEGER REFERENCES user_profiles(profileid) ON DELETE SET NULL, score NUMERIC NOT NULL, event_id INTEGER REFERENCES events(event_id), created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE subathon_goals( goal_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, subathon_id INTEGER NOT NULL REFERENCES subathons(subathon_id) ON DELETE CASCADE, required_score NUMERIC NOT NULL, description TEXT NOT NULL, notified BOOLEAN DEFAULT false, created_at TIMESTAMPTZ DEFAULT NOW() ); COMMIT;