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}"
|
||||
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"
|
||||
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)
|
||||
else
|
||||
"";
|
||||
|
||||
Reference in New Issue
Block a user