erp-core-database-v2/scripts/drop-database.sh

76 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# ============================================================================
# ERP GENERIC - DROP DATABASE SCRIPT
# ============================================================================
# Description: Drops the ERP Generic database
# Usage: ./scripts/drop-database.sh [--force]
# ============================================================================
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DATABASE_DIR="$(dirname "$SCRIPT_DIR")"
# Load environment variables
if [ -f "$DATABASE_DIR/.env" ]; then
source "$DATABASE_DIR/.env"
elif [ -f "$DATABASE_DIR/.env.example" ]; then
source "$DATABASE_DIR/.env.example"
fi
# Default values
POSTGRES_HOST="${POSTGRES_HOST:-localhost}"
POSTGRES_PORT="${POSTGRES_PORT:-5432}"
POSTGRES_DB="${POSTGRES_DB:-erp_generic}"
POSTGRES_USER="${POSTGRES_USER:-erp_admin}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-erp_secret_2024}"
# Connection string
export PGPASSWORD="$POSTGRES_PASSWORD"
PSQL_CMD="psql -h $POSTGRES_HOST -p $POSTGRES_PORT -U $POSTGRES_USER"
# Check for --force flag
FORCE=false
if [ "$1" == "--force" ]; then
FORCE=true
fi
echo -e "${RED}============================================${NC}"
echo -e "${RED} ERP GENERIC - DROP DATABASE${NC}"
echo -e "${RED}============================================${NC}"
echo ""
echo -e "Database: ${YELLOW}$POSTGRES_DB${NC}"
echo ""
if [ "$FORCE" != true ]; then
echo -e "${RED}WARNING: This will permanently delete all data!${NC}"
read -p "Are you sure you want to drop the database? (y/N): " confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "Aborted."
exit 0
fi
fi
echo -e "${BLUE}Terminating active connections...${NC}"
$PSQL_CMD -d postgres -c "
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '$POSTGRES_DB'
AND pid <> pg_backend_pid();
" 2>/dev/null || true
echo -e "${BLUE}Dropping database...${NC}"
$PSQL_CMD -d postgres -c "DROP DATABASE IF EXISTS $POSTGRES_DB;"
echo ""
echo -e "${GREEN}Database '$POSTGRES_DB' has been dropped.${NC}"
echo ""