diff --git a/db/migrations/20250728054639_create_schema.sql b/db/migrations/20250728054639_create_schema.sql new file mode 100644 index 0000000..c37a826 --- /dev/null +++ b/db/migrations/20250728054639_create_schema.sql @@ -0,0 +1,5 @@ +-- migrate:up +CREATE SCHEMA yore; + +-- migrate:down +DROP SCHEMA yore; diff --git a/db/migrations/20250728060412_create_index.sql b/db/migrations/20250728060412_create_index.sql new file mode 100644 index 0000000..19b58d5 --- /dev/null +++ b/db/migrations/20250728060412_create_index.sql @@ -0,0 +1,15 @@ +-- migrate:up +CREATE TABLE yore.day_index ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + day date NOT NULL UNIQUE +); + +CREATE TABLE yore.day_file ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + day_id bigint REFERENCES yore.day_index(id), + relative_path text NOT NULL +); + +-- migrate:down +DROP TABLE yore.day_file; +DROP TABLE yore.day_index; diff --git a/db/schema.sql b/db/schema.sql new file mode 100644 index 0000000..d434642 --- /dev/null +++ b/db/schema.sql @@ -0,0 +1,133 @@ +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: yore; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA yore; + + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.schema_migrations ( + version character varying NOT NULL +); + + +-- +-- Name: day_file; Type: TABLE; Schema: yore; Owner: - +-- + +CREATE TABLE yore.day_file ( + id bigint NOT NULL, + day_id bigint, + relative_path text NOT NULL +); + + +-- +-- Name: day_file_id_seq; Type: SEQUENCE; Schema: yore; Owner: - +-- + +ALTER TABLE yore.day_file ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY ( + SEQUENCE NAME yore.day_file_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1 +); + + +-- +-- Name: day_index; Type: TABLE; Schema: yore; Owner: - +-- + +CREATE TABLE yore.day_index ( + id bigint NOT NULL, + day date NOT NULL +); + + +-- +-- Name: day_index_id_seq; Type: SEQUENCE; Schema: yore; Owner: - +-- + +ALTER TABLE yore.day_index ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY ( + SEQUENCE NAME yore.day_index_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1 +); + + +-- +-- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.schema_migrations + ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); + + +-- +-- Name: day_file day_file_pkey; Type: CONSTRAINT; Schema: yore; Owner: - +-- + +ALTER TABLE ONLY yore.day_file + ADD CONSTRAINT day_file_pkey PRIMARY KEY (id); + + +-- +-- Name: day_index day_index_day_key; Type: CONSTRAINT; Schema: yore; Owner: - +-- + +ALTER TABLE ONLY yore.day_index + ADD CONSTRAINT day_index_day_key UNIQUE (day); + + +-- +-- Name: day_index day_index_pkey; Type: CONSTRAINT; Schema: yore; Owner: - +-- + +ALTER TABLE ONLY yore.day_index + ADD CONSTRAINT day_index_pkey PRIMARY KEY (id); + + +-- +-- Name: day_file day_file_day_id_fkey; Type: FK CONSTRAINT; Schema: yore; Owner: - +-- + +ALTER TABLE ONLY yore.day_file + ADD CONSTRAINT day_file_day_id_fkey FOREIGN KEY (day_id) REFERENCES yore.day_index(id); + + +-- +-- PostgreSQL database dump complete +-- + + +-- +-- Dbmate schema migrations +-- + +INSERT INTO public.schema_migrations (version) VALUES + ('20250728054639'), + ('20250728060412'); diff --git a/flake.lock b/flake.lock index 595b378..1284f87 100644 --- a/flake.lock +++ b/flake.lock @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1752972533, - "narHash": "sha256-jhVfZK05aRtQ6FqLfLrhpGk8bRAkpXXXxVx4DhJgQVY=", + "lastModified": 1753685821, + "narHash": "sha256-X6YaJuZHcZKCytmMnTj2lLPGGwhypU6YPfUdbGB/px4=", "ref": "main", - "rev": "b39da29d139763f41bffcc8c4c175e472d672f45", - "revCount": 61, + "rev": "9e9e0204bb4c84915c2133d6fc9d9028a24b0e81", + "revCount": 62, "type": "git", "url": "https://git.pbrinkmeier.de/paul/opium" }, diff --git a/flake.nix b/flake.nix index 8b97196..c0b6c3a 100644 --- a/flake.nix +++ b/flake.nix @@ -74,6 +74,7 @@ pkgs.haskellPackages.implicit-hie pkgs.haskell-language-server pkgs.postgresql + pkgs.dbmate ]; overrides = addOpium; }).env;