-
-
Save r37r0m0d3l/ec998e9fdb89dab69a0d6f7463e599cd to your computer and use it in GitHub Desktop.
Create Types and Roles If Not Exist in PostgreSQL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BEGIN; | |
DO $$ | |
BEGIN | |
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'task_status') THEN | |
create type task_status AS ENUM ('todo', 'doing', 'blocked', 'done'); | |
END IF; | |
END | |
$$; | |
CREATE TABLE IF NOT EXISTS | |
tasks ( | |
id integer PRIMARY KEY, | |
title varchar(200), | |
status task_status NOT NULL DEFAULT 'todo', | |
created_date timestamp | |
); | |
DO $$ | |
BEGIN | |
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'reader') THEN | |
CREATE ROLE reader; | |
END IF; | |
END | |
$$; | |
GRANT SELECT ON tasks TO reader; | |
COMMIT; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment