From 4e9dbeee79a23cac6e8e61983656ec8e3af608e9 Mon Sep 17 00:00:00 2001 From: Interitio Date: Mon, 1 Sep 2025 19:40:49 +1000 Subject: [PATCH] Add schema. --- data/subathon.sql | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 data/subathon.sql diff --git a/data/subathon.sql b/data/subathon.sql new file mode 100644 index 0000000..9f7ce0e --- /dev/null +++ b/data/subathon.sql @@ -0,0 +1,44 @@ +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), + started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + initial_time INTEGER NOT NULL, + 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, + 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), + profileid INTEGER REFERENCES user_profiles(profileid), + 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), + required_score NUMERIC NOT NULL, + description TEXT NOT NULL, + notified BOOLEAN DEFAULT false, + created_at TIMESTAMPTZ DEFAULT NOW() +); + +COMMIT;