add ability to create default user
This commit is contained in:
20
lib.nix
20
lib.nix
@@ -115,6 +115,26 @@ in
|
|||||||
echo "Checking presence of database ${db.name}"
|
echo "Checking presence of database ${db.name}"
|
||||||
dbAlreadyExists="$(echo "SELECT 1 AS result FROM pg_database WHERE datname='${db.name}';" | psql --dbname postgres | ${pkgs.gnugrep}/bin/grep -c 'exists = "1"' || true)"
|
dbAlreadyExists="$(echo "SELECT 1 AS result FROM pg_database WHERE datname='${db.name}';" | psql --dbname postgres | ${pkgs.gnugrep}/bin/grep -c 'exists = "1"' || true)"
|
||||||
echo "$dbAlreadyExists"
|
echo "$dbAlreadyExists"
|
||||||
|
if [ 1 -ne "$dbAlreadyExists" ]; then
|
||||||
|
echo "Creating database ${db.name}"
|
||||||
|
echo 'CREATE DATABASE "${db.name}";' | psql --dbname postgres
|
||||||
|
${lib.optionalString (db.user != null && db.password != null) ''
|
||||||
|
echo "Creating user ${db.user}"
|
||||||
|
psql --dbname postgres <<'EOF'
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
CREATE ROLE "${db.user}" WITH LOGIN PASSWORD '${db.password}';
|
||||||
|
EXCEPTION WHEN duplicate_object THEN RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
|
||||||
|
END
|
||||||
|
$$;
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE "${db.name}" TO "${db.user}";
|
||||||
|
\c ${db.name}
|
||||||
|
GRANT ALL PRIVILEGES ON SCHEMA public TO "${db.user}";
|
||||||
|
EOF
|
||||||
|
''}
|
||||||
|
else
|
||||||
|
echo "Database ${db.name} already exists"
|
||||||
|
fi
|
||||||
'') initialDatabases)
|
'') initialDatabases)
|
||||||
else
|
else
|
||||||
"";
|
"";
|
||||||
|
|||||||
Reference in New Issue
Block a user