From: Jakub Czajka Date: Tue, 2 Jan 2024 11:59:00 +0000 (+0100) Subject: Add files for creating and dropping the database. X-Git-Url: https://git.ekhem.eu.org/?a=commitdiff_plain;h=193bf0033e23b660fe948a1a84d02970ad2f80f4;p=metrics.git Add files for creating and dropping the database. --- diff --git a/create.sql b/create.sql new file mode 100644 index 0000000..a9acd2a --- /dev/null +++ b/create.sql @@ -0,0 +1,34 @@ +/* Copyright (c) 2024 Jakub Czajka + License: GPL-3.0 or later. */ + +CREATE TABLE IF NOT EXISTS sleep ( + id SERIAL PRIMARY KEY, + date DATE DEFAULT CURRENT_DATE, + start TIME(0) WITH TIME ZONE, + finish TIME(0) WITH TIME ZONE +); + +DO $$ +BEGIN + IF NOT EXISTS (SELECT * FROM pg_user WHERE usename = 'metrics_tracker') + THEN + CREATE ROLE metrics_tracker LOGIN; + + GRANT SELECT + ON TABLE sleep + TO metrics_tracker; + + GRANT INSERT + ON TABLE sleep + TO metrics_tracker; + + GRANT USAGE, SELECT + ON SEQUENCE sleep_id_seq + TO metrics_tracker; + + /* Execute for the current database. */ + EXECUTE FORMAT('GRANT CONNECT + ON DATABASE %I + TO metrics_tracker', current_database()); + END IF; +END$$; diff --git a/drop.sql b/drop.sql new file mode 100644 index 0000000..9d655d5 --- /dev/null +++ b/drop.sql @@ -0,0 +1,29 @@ +/* Copyright (c) 2024 Jakub Czajka + License: GPL-3.0 or later. */ + +DO $$ +BEGIN + IF EXISTS (SELECT * FROM pg_user WHERE usename = 'metrics_tracker') + THEN + REVOKE SELECT + ON TABLE sleep + FROM metrics_tracker; + + REVOKE INSERT + ON TABLE sleep + FROM metrics_tracker; + + REVOKE USAGE, SELECT + ON SEQUENCE sleep_id_seq + FROM metrics_tracker; + + EXECUTE + FORMAT('REVOKE CONNECT + ON DATABASE %I + FROM metrics_tracker;', current_database()); + + DROP ROLE metrics_tracker; + END IF; +END$$; + +DROP TABLE IF EXISTS sleep;