--- CRIMSON --- A simple PHP framework. --- Copyright © 2024 Freya Murphy <contact@freyacat.org> --- --- This file is part of CRIMSON. --- --- CRIMSON is free software; you can redistribute it and/or modify it --- under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 3 of the License, or (at --- your option) any later version. --- --- CRIMSON is distributed in the hope that it will be useful, but --- WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with CRIMSON. If not, see <http://www.gnu.org/licenses/>. -- Set's up crimsons baseline database. Can be run multiple times. BEGIN TRANSACTION; SET search_path = public; SET client_min_messages TO WARNING; -- Migration Start CREATE SCHEMA IF NOT EXISTS sys; -- sys ALTER SCHEMA sys OWNER TO POSTGRES_USER; -- sys.*/* DROP DOMAIN IF EXISTS sys."*/*" CASCADE; CREATE DOMAIN sys."*/*" AS BYTEA; -- sys.database_info CREATE TABLE IF NOT EXISTS sys.database_info ( name TEXT DEFAULT ''::text NOT NULL, jwt_secret TEXT DEFAULT ''::text NOT NULL, curr_revision INTEGER DEFAULT 0 NOT NULL ); ALTER TABLE sys.database_info DROP CONSTRAINT IF EXISTS database_info_pkey; ALTER TABLE sys.database_info ADD CONSTRAINT database_info_pkey PRIMARY KEY (name); ALTER TABLE sys.database_info OWNER TO POSTGRES_USER; INSERT INTO sys.database_info (name, curr_revision) VALUES (current_database(), 0) ON CONFLICT DO NOTHING; -- sys.JWT DROP TYPE IF EXISTS sys.JWT CASCADE; CREATE TYPE sys.JWT AS ( token TEXT ); -- authenticator DO $$ BEGIN IF NOT EXISTS (SELECT * FROM pg_user WHERE usename = 'authenticator') THEN CREATE ROLE authenticator LOGIN NOINHERIT NOCREATEDB NOCREATEROLE NOSUPERUSER; END IF; END $$; ALTER ROLE authenticator WITH PASSWORD 'postgrest'; -- anonymous DROP ROLE IF EXISTS anonymous; CREATE ROLE anonymous NOLOGIN; -- Migration End; COMMIT TRANSACTION;