102 lines
3.1 KiB
Bash
Executable File
102 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================================
|
|
# ERP GENERIC - LOAD SEEDS SCRIPT
|
|
# ============================================================================
|
|
# Description: Loads seed data for the specified environment
|
|
# Usage: ./scripts/load-seeds.sh [dev|prod]
|
|
# ============================================================================
|
|
|
|
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")"
|
|
SEEDS_DIR="$DATABASE_DIR/seeds"
|
|
|
|
# Environment (default: dev)
|
|
ENV="${1:-dev}"
|
|
|
|
# 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 -d $POSTGRES_DB"
|
|
|
|
echo -e "${BLUE}============================================${NC}"
|
|
echo -e "${BLUE} ERP GENERIC - LOAD SEED DATA${NC}"
|
|
echo -e "${BLUE}============================================${NC}"
|
|
echo ""
|
|
echo -e "Environment: ${GREEN}$ENV${NC}"
|
|
echo -e "Database: ${GREEN}$POSTGRES_DB${NC}"
|
|
echo ""
|
|
|
|
# Check if seeds directory exists
|
|
SEED_ENV_DIR="$SEEDS_DIR/$ENV"
|
|
if [ ! -d "$SEED_ENV_DIR" ]; then
|
|
echo -e "${RED}Error: Seeds directory not found: $SEED_ENV_DIR${NC}"
|
|
echo "Available environments:"
|
|
ls -1 "$SEEDS_DIR" 2>/dev/null || echo " (none)"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if there are SQL files
|
|
SEED_FILES=($(find "$SEED_ENV_DIR" -name "*.sql" -type f | sort))
|
|
|
|
if [ ${#SEED_FILES[@]} -eq 0 ]; then
|
|
echo -e "${YELLOW}No seed files found in $SEED_ENV_DIR${NC}"
|
|
echo "Create seed files with format: XX-description.sql"
|
|
exit 0
|
|
fi
|
|
|
|
echo -e "${BLUE}Loading ${#SEED_FILES[@]} seed file(s)...${NC}"
|
|
echo ""
|
|
|
|
TOTAL=${#SEED_FILES[@]}
|
|
CURRENT=0
|
|
FAILED=0
|
|
|
|
for seed_file in "${SEED_FILES[@]}"; do
|
|
CURRENT=$((CURRENT + 1))
|
|
filename=$(basename "$seed_file")
|
|
|
|
echo -e " [${CURRENT}/${TOTAL}] Loading ${YELLOW}$filename${NC}..."
|
|
|
|
if $PSQL_CMD -f "$seed_file" > /dev/null 2>&1; then
|
|
echo -e " [${CURRENT}/${TOTAL}] ${GREEN}$filename loaded successfully${NC}"
|
|
else
|
|
echo -e " [${CURRENT}/${TOTAL}] ${RED}Error loading $filename${NC}"
|
|
FAILED=$((FAILED + 1))
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
if [ $FAILED -eq 0 ]; then
|
|
echo -e "${GREEN}============================================${NC}"
|
|
echo -e "${GREEN} ALL SEEDS LOADED SUCCESSFULLY!${NC}"
|
|
echo -e "${GREEN}============================================${NC}"
|
|
else
|
|
echo -e "${YELLOW}============================================${NC}"
|
|
echo -e "${YELLOW} SEEDS LOADED WITH $FAILED ERRORS${NC}"
|
|
echo -e "${YELLOW}============================================${NC}"
|
|
fi
|
|
echo ""
|