87 lines
2.1 KiB
MySQL
87 lines
2.1 KiB
MySQL
|
--- 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;
|