2020-12-13 22:25:13 +00:00
|
|
|
-- `CREATE USER` does not support `IF NOT EXISTS`, so we use this workaround to prevent an error and raise a notice instead.
|
|
|
|
-- Seen here: https://stackoverflow.com/a/49858797
|
|
|
|
DO $$
|
|
|
|
BEGIN
|
|
|
|
CREATE USER {{ additional_db.username }};
|
|
|
|
EXCEPTION WHEN DUPLICATE_OBJECT THEN
|
2020-12-14 08:04:37 +00:00
|
|
|
RAISE NOTICE 'not creating user {{ additional_db.username }}, since it already exists';
|
2020-12-13 22:25:13 +00:00
|
|
|
END
|
|
|
|
$$;
|
|
|
|
|
|
|
|
-- This is useful for initial user creation (since we don't assign a password above) and for handling subsequent password changes
|
|
|
|
-- TODO - we should escape quotes in the password.
|
2020-12-13 22:43:03 +00:00
|
|
|
ALTER ROLE {{ additional_db.username }} PASSWORD '{{ additional_db.password }}';
|
2020-12-13 22:25:13 +00:00
|
|
|
|
|
|
|
-- This will generate an error on subsequent execution
|
|
|
|
CREATE DATABASE {{ additional_db.name }} WITH LC_CTYPE 'C' LC_COLLATE 'C' OWNER {{ additional_db.username }};
|
|
|
|
|
|
|
|
-- This is useful for changing the database owner subsequently
|
|
|
|
ALTER DATABASE {{ additional_db.name }} OWNER TO {{ additional_db.username }};
|