Compare commits

...

3 Commits

2 changed files with 290 additions and 1 deletions

View File

@ -0,0 +1,288 @@
--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_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: half_orm_meta; Type: SCHEMA; Schema: -; Owner: -
--
CREATE SCHEMA half_orm_meta;
--
-- Name: half_orm_meta.view; Type: SCHEMA; Schema: -; Owner: -
--
CREATE SCHEMA "half_orm_meta.view";
--
-- Name: check_database(text); Type: FUNCTION; Schema: half_orm_meta; Owner: -
--
CREATE FUNCTION half_orm_meta.check_database(old_dbid text DEFAULT NULL::text) RETURNS text
LANGUAGE plpgsql
AS $$
DECLARE
dbname text;
dbid text;
BEGIN
select current_database() into dbname;
--XXX: use a materialized view.
BEGIN
select encode(hmac(dbname, pg_read_file('hop_key'), 'sha1'), 'hex') into dbid;
EXCEPTION
when undefined_file then
raise NOTICE 'No hop_key file for the cluster. Will use % for dbid', dbname;
dbid := dbname;
END;
if old_dbid is not null and old_dbid != dbid
then
raise Exception 'Not the same database!';
end if;
return dbid;
END;
$$;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: bootstrap; Type: TABLE; Schema: half_orm_meta; Owner: -
--
CREATE TABLE half_orm_meta.bootstrap (
filename text NOT NULL,
version text NOT NULL,
executed_at timestamp without time zone DEFAULT now()
);
--
-- Name: TABLE bootstrap; Type: COMMENT; Schema: half_orm_meta; Owner: -
--
COMMENT ON TABLE half_orm_meta.bootstrap IS 'Tracks executed bootstrap scripts for data initialization';
--
-- Name: COLUMN bootstrap.filename; Type: COMMENT; Schema: half_orm_meta; Owner: -
--
COMMENT ON COLUMN half_orm_meta.bootstrap.filename IS 'Bootstrap file name (e.g., 1-init-users-0.1.0.sql)';
--
-- Name: COLUMN bootstrap.version; Type: COMMENT; Schema: half_orm_meta; Owner: -
--
COMMENT ON COLUMN half_orm_meta.bootstrap.version IS 'Release version from filename (e.g., 0.1.0)';
--
-- Name: COLUMN bootstrap.executed_at; Type: COMMENT; Schema: half_orm_meta; Owner: -
--
COMMENT ON COLUMN half_orm_meta.bootstrap.executed_at IS 'Timestamp when the script was executed';
--
-- Name: database; Type: TABLE; Schema: half_orm_meta; Owner: -
--
CREATE TABLE half_orm_meta.database (
id text NOT NULL,
name text NOT NULL,
description text
);
--
-- Name: TABLE database; Type: COMMENT; Schema: half_orm_meta; Owner: -
--
COMMENT ON TABLE half_orm_meta.database IS '
id identifies the database in the cluster. It uses the key
in hop_key.
';
--
-- Name: hop_release; Type: TABLE; Schema: half_orm_meta; Owner: -
--
CREATE TABLE half_orm_meta.hop_release (
major integer NOT NULL,
minor integer NOT NULL,
patch integer NOT NULL,
pre_release text DEFAULT ''::text NOT NULL,
pre_release_num text DEFAULT ''::text NOT NULL,
date date DEFAULT CURRENT_DATE,
"time" time(0) with time zone DEFAULT CURRENT_TIME,
changelog text,
commit text,
dbid text,
hop_release text,
CONSTRAINT hop_release_major_check CHECK ((major >= 0)),
CONSTRAINT hop_release_minor_check CHECK ((minor >= 0)),
CONSTRAINT hop_release_patch_check CHECK ((patch >= 0)),
CONSTRAINT hop_release_pre_release_check CHECK ((pre_release = ANY (ARRAY['alpha'::text, 'beta'::text, 'rc'::text, ''::text]))),
CONSTRAINT hop_release_pre_release_num_check CHECK (((pre_release_num = ''::text) OR (pre_release_num ~ '^\d+$'::text)))
);
--
-- Name: hop_release_issue; Type: TABLE; Schema: half_orm_meta; Owner: -
--
CREATE TABLE half_orm_meta.hop_release_issue (
num integer NOT NULL,
issue_release integer DEFAULT 0 NOT NULL,
release_major integer NOT NULL,
release_minor integer NOT NULL,
release_patch integer NOT NULL,
release_pre_release text NOT NULL,
release_pre_release_num text NOT NULL,
changelog text,
CONSTRAINT hop_release_issue_num_check CHECK ((num >= 0))
);
--
-- Name: hop_last_release; Type: VIEW; Schema: half_orm_meta.view; Owner: -
--
CREATE VIEW "half_orm_meta.view".hop_last_release AS
SELECT major,
minor,
patch,
pre_release,
pre_release_num,
date,
"time",
changelog,
commit
FROM half_orm_meta.hop_release
ORDER BY major DESC, minor DESC, patch DESC, pre_release DESC, pre_release_num DESC
LIMIT 1;
--
-- Name: hop_penultimate_release; Type: VIEW; Schema: half_orm_meta.view; Owner: -
--
CREATE VIEW "half_orm_meta.view".hop_penultimate_release AS
SELECT major,
minor,
patch
FROM ( SELECT hop_release.major,
hop_release.minor,
hop_release.patch
FROM half_orm_meta.hop_release
ORDER BY hop_release.major DESC, hop_release.minor DESC, hop_release.patch DESC
LIMIT 2) penultimate
ORDER BY major, minor, patch
LIMIT 1;
--
-- Data for Name: bootstrap; Type: TABLE DATA; Schema: half_orm_meta; Owner: -
--
COPY half_orm_meta.bootstrap (filename, version, executed_at) FROM stdin;
\.
--
-- Data for Name: database; Type: TABLE DATA; Schema: half_orm_meta; Owner: -
--
COPY half_orm_meta.database (id, name, description) FROM stdin;
\.
--
-- Data for Name: hop_release; Type: TABLE DATA; Schema: half_orm_meta; Owner: -
--
COPY half_orm_meta.hop_release (major, minor, patch, pre_release, pre_release_num, date, "time", changelog, commit, dbid, hop_release) FROM stdin;
0 0 0 2026-08-16 10:32:41+02 Initial release \N \N \N
\.
--
-- Data for Name: hop_release_issue; Type: TABLE DATA; Schema: half_orm_meta; Owner: -
--
COPY half_orm_meta.hop_release_issue (num, issue_release, release_major, release_minor, release_patch, release_pre_release, release_pre_release_num, changelog) FROM stdin;
\.
--
-- Name: bootstrap bootstrap_pkey; Type: CONSTRAINT; Schema: half_orm_meta; Owner: -
--
ALTER TABLE ONLY half_orm_meta.bootstrap
ADD CONSTRAINT bootstrap_pkey PRIMARY KEY (filename);
--
-- Name: database database_pkey; Type: CONSTRAINT; Schema: half_orm_meta; Owner: -
--
ALTER TABLE ONLY half_orm_meta.database
ADD CONSTRAINT database_pkey PRIMARY KEY (id);
--
-- Name: hop_release_issue hop_release_issue_pkey; Type: CONSTRAINT; Schema: half_orm_meta; Owner: -
--
ALTER TABLE ONLY half_orm_meta.hop_release_issue
ADD CONSTRAINT hop_release_issue_pkey PRIMARY KEY (num, issue_release);
--
-- Name: hop_release hop_release_pkey; Type: CONSTRAINT; Schema: half_orm_meta; Owner: -
--
ALTER TABLE ONLY half_orm_meta.hop_release
ADD CONSTRAINT hop_release_pkey PRIMARY KEY (major, minor, patch, pre_release, pre_release_num);
--
-- Name: hop_release hop_release_dbid_fkey; Type: FK CONSTRAINT; Schema: half_orm_meta; Owner: -
--
ALTER TABLE ONLY half_orm_meta.hop_release
ADD CONSTRAINT hop_release_dbid_fkey FOREIGN KEY (dbid) REFERENCES half_orm_meta.database(id) ON UPDATE CASCADE;
--
-- Name: hop_release_issue hop_release_issue_release_major_release_minor_release_patc_fkey; Type: FK CONSTRAINT; Schema: half_orm_meta; Owner: -
--
ALTER TABLE ONLY half_orm_meta.hop_release_issue
ADD CONSTRAINT hop_release_issue_release_major_release_minor_release_patc_fkey FOREIGN KEY (release_major, release_minor, release_patch, release_pre_release, release_pre_release_num) REFERENCES half_orm_meta.hop_release(major, minor, patch, pre_release, pre_release_num);
--
-- PostgreSQL database dump complete
--

View File

@ -1 +1,2 @@
[patches]
[patches.1-ddd-structure]
status = "candidate"