From f8bace0d21fb79a09418a17df13f78b3652246d8 Mon Sep 17 00:00:00 2001 From: Roy Dumblauskas Date: Wed, 19 Nov 2025 01:12:28 -0600 Subject: [PATCH] correct bash 'if' syntax --- homelab-services/postgresql-db/flake.nix | 35 ++++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/homelab-services/postgresql-db/flake.nix b/homelab-services/postgresql-db/flake.nix index 2b67855..d0efd91 100644 --- a/homelab-services/postgresql-db/flake.nix +++ b/homelab-services/postgresql-db/flake.nix @@ -58,6 +58,7 @@ enable = true; dataDir = opts.dataDir; settings.port = opts.port; + settings.listen_addresses = "*"; identMap = '' postgres roy postgres ''; @@ -115,15 +116,39 @@ echo $dev_user_val echo $dev_pass_val - # Create databases - $psql_bin -c "CREATE DATABASE "$db";" + # Create databases if not exists + if $psql_bin -c "\du" | grep -c \"$db \"; then + echo "$db already exists, skipping creation." + else + echo "Creating database $db" + $psql_bin -c "CREATE DATABASE "$db";" + fi + + if $psql_bin -c "\du" | grep -c "$db"_dev; then + echo ""$db"_dev already exists, skipping creation." + else + echo "Creating database "$db"_dev" + $psql_bin -c "CREATE DATABASE "$db";" + fi + $psql_bin -c "CREATE DATABASE "$db"_dev;" # Create users if not exists - $psql_bin -c "CREATE ROLE "$user_val" WITH LOGIN PASSWORD '$pass_val';" - $psql_bin -c "CREATE ROLE "$dev_user_val" WITH LOGIN PASSWORD '$dev_pass_val';" + if $psql_bin -c "\du" | grep -c "$user_val"; then + echo "$user_val already exists, skipping creation. WARN: password may not be correct. Delete user and allow to be recreated for assurity" + else + echo "Creating $user_val" + $psql_bin -c "CREATE ROLE "$user_val" WITH LOGIN PASSWORD '$pass_val';" + fi - # Give users privileges on databases + if $psql_bin -c "\du" | grep "$dev_user_val"; then + echo "$dev_user_val already exists, skipping creation. WARN: password may not be correct. Delete user and allow to be recreated for assurity" + else + echo "Creating $dev_user_val" + $psql_bin -c "CREATE ROLE "$dev_user_val" WITH LOGIN PASSWORD '$dev_pass_val';" + fi + + # Give users privileges on databases (always) $psql_bin -c "GRANT ALL PRIVILEGES ON DATABASE "$db" TO "$user_val";" $psql_bin -c "GRANT ALL PRIVILEGES ON DATABASE "$db"_dev TO "$dev_user_val";"