codenuk_backend_mine/scripts/cleanup-database.sh
2025-10-10 08:56:39 +05:30

103 lines
3.4 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# ========================================
# DATABASE CLEANUP SCRIPT
# ========================================
# Database connection parameters
DB_HOST=${POSTGRES_HOST:-postgres}
DB_PORT=${POSTGRES_PORT:-5432}
DB_NAME=${POSTGRES_DB:-dev_pipeline}
DB_USER=${POSTGRES_USER:-pipeline_admin}
DB_PASSWORD=${POSTGRES_PASSWORD:-secure_pipeline_2024}
# Log function with timestamp
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
log "🧹 Starting database cleanup..."
# Connect to PostgreSQL and clean up unwanted tables
PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" << 'EOF'
-- List all tables before cleanup
\echo '📋 Tables before cleanup:'
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name;
-- Drop unwanted/duplicate tables that might have been created
\echo '🗑️ Dropping unwanted tables...'
-- Drop tables that might be duplicates or unwanted
DROP TABLE IF EXISTS user_api_keys CASCADE;
DROP TABLE IF EXISTS role_scope CASCADE;
DROP TABLE IF EXISTS scope CASCADE;
DROP TABLE IF EXISTS service_health CASCADE;
DROP TABLE IF EXISTS settings CASCADE;
DROP TABLE IF EXISTS shared_credentials CASCADE;
DROP TABLE IF EXISTS shared_workflow CASCADE;
DROP TABLE IF EXISTS stack_recommendations CASCADE;
DROP TABLE IF EXISTS system_architectures CASCADE;
DROP TABLE IF EXISTS tag_entity CASCADE;
DROP TABLE IF EXISTS tech_pricing CASCADE;
DROP TABLE IF EXISTS tech_stack_decisions CASCADE;
DROP TABLE IF EXISTS template_features CASCADE;
DROP TABLE IF EXISTS templates CASCADE;
DROP TABLE IF EXISTS test_case_execution CASCADE;
DROP TABLE IF EXISTS test_results CASCADE;
DROP TABLE IF EXISTS test_run CASCADE;
DROP TABLE IF EXISTS testing_technologies CASCADE;
DROP TABLE IF EXISTS tools CASCADE;
DROP TABLE IF EXISTS "user" CASCADE;
DROP TABLE IF EXISTS user_feature_preferences CASCADE;
DROP TABLE IF EXISTS user_preferences CASCADE;
DROP TABLE IF EXISTS user_projects CASCADE;
DROP TABLE IF EXISTS user_sessions CASCADE;
DROP TABLE IF EXISTS variables CASCADE;
DROP TABLE IF EXISTS webhook_entity CASCADE;
DROP TABLE IF EXISTS wireframe_elements CASCADE;
DROP TABLE IF EXISTS wireframe_versions CASCADE;
DROP TABLE IF EXISTS wireframes CASCADE;
DROP TABLE IF EXISTS workflow_entity CASCADE;
DROP TABLE IF EXISTS workflow_history CASCADE;
DROP TABLE IF EXISTS workflow_statistics CASCADE;
DROP TABLE IF EXISTS workflows_tags CASCADE;
-- Drop any duplicate functions
DROP FUNCTION IF EXISTS update_updated_at_column() CASCADE;
-- Clean up any orphaned sequences
DO $$
DECLARE
seq_record RECORD;
BEGIN
FOR seq_record IN
SELECT sequence_name
FROM information_schema.sequences
WHERE sequence_schema = 'public'
AND sequence_name NOT IN (
SELECT column_default
FROM information_schema.columns
WHERE table_schema = 'public'
AND column_default LIKE 'nextval%'
)
LOOP
EXECUTE 'DROP SEQUENCE IF EXISTS ' || seq_record.sequence_name || ' CASCADE';
END LOOP;
END $$;
-- List tables after cleanup
\echo '📋 Tables after cleanup:'
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name;
\echo '✅ Database cleanup completed!'
EOF
if [ $? -eq 0 ]; then
log "✅ Database cleanup completed successfully"
else
log "❌ Database cleanup failed"
exit 1
fi