codenuk_backend_mine/services/ai-analysis-service/migrate.sh
2025-10-16 10:52:33 +05:30

105 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# Database Migration Script using psql
# Executes the complete 001-schema.sql file
set -e # Exit on any error
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Load environment variables
if [ -f .env ]; then
export $(cat .env | grep -v '^#' | xargs)
fi
# Database connection parameters
DB_HOST=${POSTGRES_HOST:-localhost}
DB_PORT=${POSTGRES_PORT:-5432}
DB_NAME=${POSTGRES_DB:-dev_pipeline}
DB_USER=${POSTGRES_USER:-pipeline_admin}
DB_PASSWORD=${POSTGRES_PASSWORD:-secure_pipeline_2024}
# Schema file
SCHEMA_FILE="001-schema.sql"
echo -e "${BLUE}🔧 AI Repository Analysis Database Migration${NC}"
echo "=================================================="
echo -e "Database: ${YELLOW}${DB_NAME}@${DB_HOST}:${DB_PORT}${NC}"
echo -e "User: ${YELLOW}${DB_USER}${NC}"
echo -e "Schema file: ${YELLOW}${SCHEMA_FILE}${NC}"
echo ""
# Check if psql is available
if ! command -v psql &> /dev/null; then
echo -e "${RED}❌ psql command not found!${NC}"
echo "Please install PostgreSQL client tools:"
echo " Ubuntu/Debian: sudo apt-get install postgresql-client"
echo " CentOS/RHEL: sudo yum install postgresql"
echo " macOS: brew install postgresql"
exit 1
fi
# Check if schema file exists
if [ ! -f "$SCHEMA_FILE" ]; then
echo -e "${RED}❌ Schema file not found: ${SCHEMA_FILE}${NC}"
exit 1
fi
echo -e "${BLUE}• Executing migration...${NC}"
# Set password for psql
export PGPASSWORD="$DB_PASSWORD"
# Run migration
if psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \
-f "$SCHEMA_FILE" \
-v ON_ERROR_STOP=1 \
--echo-errors \
--echo-queries; then
echo -e "${GREEN}✅ Migration completed successfully!${NC}"
# Verify migration
echo -e "${BLUE}• Verifying migration...${NC}"
TABLES=$(psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c "
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name IN ('code_embeddings', 'query_embeddings', 'knowledge_embeddings',
'repository_metadata', 'analysis_sessions', 'file_analysis_history')
ORDER BY table_name;
" | tr -d ' ')
if [ -n "$TABLES" ]; then
TABLE_COUNT=$(echo "$TABLES" | wc -l)
echo -e "${GREEN}✓ Found ${TABLE_COUNT} core tables: ${TABLES}${NC}"
else
echo -e "${YELLOW}⚠ Could not verify table creation${NC}"
fi
# Check for pgvector extension
VECTOR_AVAILABLE=$(psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c "
SELECT EXISTS(SELECT 1 FROM pg_extension WHERE extname = 'vector');
" | tr -d ' ')
if [ "$VECTOR_AVAILABLE" = "t" ]; then
echo -e "${GREEN}✓ pgvector extension is available${NC}"
else
echo -e "${YELLOW}⚠ pgvector extension not available - vector operations will be limited${NC}"
fi
echo ""
echo -e "${GREEN}🚀 Database migration completed successfully!${NC}"
echo -e "${GREEN}📊 Production-level database ready for AI repository analysis${NC}"
else
echo -e "${RED}❌ Migration failed!${NC}"
exit 1
fi