#!/bin/bash # ============================================ # TEMPLATE-SAAS: Drop and Recreate Database # Version: 1.0.0 # ============================================ set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Default values DB_HOST="${DB_HOST:-localhost}" DB_PORT="${DB_PORT:-5432}" DB_NAME="${DB_NAME:-template_saas_dev}" DB_USER="${DB_USER:-template_saas_user}" DB_PASSWORD="${DB_PASSWORD:-template_saas_dev_2026}" DB_ADMIN_USER="${DB_ADMIN_USER:-postgres}" DB_ADMIN_PASSWORD="${DB_ADMIN_PASSWORD:-postgres}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" echo -e "${BLUE}============================================${NC}" echo -e "${BLUE} TEMPLATE-SAAS Drop & Recreate Database${NC}" echo -e "${BLUE}============================================${NC}" echo "" echo -e "Database: ${YELLOW}$DB_NAME${NC}" echo "" # Confirm if [ "$FORCE" != "1" ]; then echo -e "${RED}WARNING: This will DROP the database $DB_NAME and all its data!${NC}" read -p "Are you sure you want to continue? (y/N) " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "Aborted." exit 1 fi fi # Drop database echo -e "${BLUE}[1/2] Dropping database...${NC}" # Terminate connections PGPASSWORD="$DB_ADMIN_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_ADMIN_USER" -d postgres -c " SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '$DB_NAME' AND pid <> pg_backend_pid(); " 2>/dev/null || true # Drop database if exists DB_EXISTS=$(PGPASSWORD="$DB_ADMIN_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_ADMIN_USER" -d postgres -tAc "SELECT 1 FROM pg_database WHERE datname='$DB_NAME'") if [ "$DB_EXISTS" = "1" ]; then PGPASSWORD="$DB_ADMIN_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_ADMIN_USER" -d postgres -c "DROP DATABASE $DB_NAME;" echo -e "${GREEN}✓ Database $DB_NAME dropped${NC}" else echo -e "${YELLOW}→ Database $DB_NAME does not exist${NC}" fi # Recreate database echo -e "${BLUE}[2/2] Creating database...${NC}" "$SCRIPT_DIR/create-database.sh" echo "" echo -e "${GREEN}Database recreated successfully!${NC}"