--- /dev/null
+/* 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$$;
--- /dev/null
+/* 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;