]> git.ekhem.eu.org Git - metrics.git/commitdiff
Add files for creating and dropping the database.
authorJakub Czajka <jakub@ekhem.eu.org>
Tue, 2 Jan 2024 11:59:00 +0000 (12:59 +0100)
committerJakub Czajka <jakub@ekhem.eu.org>
Tue, 2 Jan 2024 11:59:00 +0000 (12:59 +0100)
create.sql [new file with mode: 0644]
drop.sql [new file with mode: 0644]

diff --git a/create.sql b/create.sql
new file mode 100644 (file)
index 0000000..a9acd2a
--- /dev/null
@@ -0,0 +1,34 @@
+/* Copyright (c) 2024 Jakub Czajka <jakub@ekhem.eu.org>
+   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 (file)
index 0000000..9d655d5
--- /dev/null
+++ b/drop.sql
@@ -0,0 +1,29 @@
+/* Copyright (c) 2024 Jakub Czajka <jakub@ekhem.eu.org>
+   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;