summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-01-20 13:35:01 +0530
committerBobby <[email protected]>2026-01-20 13:35:01 +0530
commit61d5f45189a40621bceeb14c6646031dd15ab6c2 (patch)
tree602c98f87d776a9088723ee3d5a27e61053cbc08 /scripts
parentc8d0bbb5b54f5cec3ebb245f9a21d8a94b3bd944 (diff)
downloadcafe-61d5f45189a40621bceeb14c6646031dd15ab6c2.tar.xz
cafe-61d5f45189a40621bceeb14c6646031dd15ab6c2.zip
Implement database configuration and management with PostgreSQL support
Diffstat (limited to 'scripts')
-rw-r--r--scripts/reset.db.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/scripts/reset.db.sh b/scripts/reset.db.sh
new file mode 100644
index 0000000..9c4a366
--- /dev/null
+++ b/scripts/reset.db.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/env bash
+set -e
+
+DEFAULT_DB="cafe"
+DEFAULT_OWNER="$(whoami)"
+DEFAULT_HOST="localhost"
+DEFAULT_PORT="5432"
+
+read -p "Enter database name [$DEFAULT_DB]: " DB_NAME
+DB_NAME="${DB_NAME:-$DEFAULT_DB}"
+
+read -p "Enter database owner username [$DEFAULT_OWNER]: " DB_OWNER
+DB_OWNER="${DB_OWNER:-$DEFAULT_OWNER}"
+
+read -s -p "Enter password for $DB_OWNER (optional): " DB_PASSWORD
+echo
+
+PSQL_BASE="psql -d postgres -U $DB_OWNER"
+
+if [ -n "$DB_PASSWORD" ]; then
+ export PGPASSWORD="$DB_PASSWORD"
+fi
+
+PSQL_TCP="$PSQL_BASE -h $DEFAULT_HOST -p $DEFAULT_PORT"
+PSQL_LOCAL="$PSQL_BASE"
+
+echo
+echo "Detecting PostgreSQL connection mode..."
+
+if $PSQL_TCP -c "SELECT 1" >/dev/null 2>&1; then
+ PSQL_CMD="$PSQL_TCP"
+ CONNECTION_INFO="TCP ($DEFAULT_HOST:$DEFAULT_PORT)"
+elif $PSQL_LOCAL -c "SELECT 1" >/dev/null 2>&1; then
+ PSQL_CMD="$PSQL_LOCAL"
+ CONNECTION_INFO="Local socket (peer / trust)"
+else
+ echo "Unable to connect to PostgreSQL."
+ echo "Tried:"
+ echo " - TCP: $DEFAULT_HOST:$DEFAULT_PORT"
+ echo " - Local: UNIX socket"
+ echo
+ echo "Fix one of the following:"
+ echo " • Docker Postgres not running"
+ echo " • Wrong user ($DB_OWNER)"
+ echo " • Password required but not provided"
+ echo " • pg_hba.conf blocks access"
+ exit 1
+fi
+
+echo "Connected via: $CONNECTION_INFO"
+
+DB_EXISTS=$($PSQL_CMD -Atc \
+ "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME';" \
+ || true)
+
+if [ "$DB_EXISTS" = "1" ]; then
+ ACTION="reset"
+else
+ ACTION="create"
+fi
+
+echo
+echo "=== Database $ACTION ==="
+echo "Database: $DB_NAME"
+echo "Owner: $DB_OWNER"
+echo "Auth: $CONNECTION_INFO"
+echo
+
+read -p "Proceed? [Y/n]: " CONFIRM
+if [[ "$CONFIRM" =~ ^[Nn]$ ]]; then
+ echo "Cancelled."
+ exit 0
+fi
+
+echo
+echo "Applying changes..."
+
+$PSQL_CMD -c "DROP DATABASE IF EXISTS \"$DB_NAME\";"
+$PSQL_CMD -c "CREATE DATABASE \"$DB_NAME\" OWNER \"$DB_OWNER\";"
+
+echo
+echo "Database '$DB_NAME' ready."
+
+if [ -n "$DB_PASSWORD" ]; then
+ DSN="postgresql://$DB_OWNER:$DB_PASSWORD@$DEFAULT_HOST:$DEFAULT_PORT/$DB_NAME?sslmode=disable"
+else
+ DSN="postgresql://$DB_OWNER@$DEFAULT_HOST:$DEFAULT_PORT/$DB_NAME?sslmode=disable"
+fi
+
+echo
+echo "DSN:"
+echo "$DSN"
+
+unset PGPASSWORD \ No newline at end of file