Add 02b-hr-employees.sql and 11-infonavit.sql to execution order. Order respects FK dependencies: - 02b after 04 (needs fraccionamientos) - 08 after 02b (needs employees for EPP) - 11 at end (needs lotes) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
121 lines
4.6 KiB
Bash
121 lines
4.6 KiB
Bash
#!/bin/bash
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# SCRIPT: load-dev-seeds.sh
|
|
# PROYECTO: ERP Construcción
|
|
# DESCRIPCIÓN: Carga todos los seeds de desarrollo en orden
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
|
|
set -e # Salir si hay error
|
|
|
|
# Configuración
|
|
DB_HOST="${DB_HOST:-localhost}"
|
|
DB_PORT="${DB_PORT:-5432}"
|
|
DB_NAME="${DB_NAME:-erp_construccion_db}"
|
|
DB_USER="${DB_USER:-erp_admin}"
|
|
DB_PASSWORD="${DB_PASSWORD:-erp_dev_2026}"
|
|
|
|
# Colores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Directorio de seeds
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${BLUE} CARGA DE SEEDS DE DESARROLLO - ERP CONSTRUCCIÓN${NC}"
|
|
echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Base de datos: ${NC}${DB_NAME}"
|
|
echo -e "${YELLOW}Host: ${NC}${DB_HOST}:${DB_PORT}"
|
|
echo -e "${YELLOW}Usuario: ${NC}${DB_USER}"
|
|
echo ""
|
|
|
|
# Función para ejecutar un seed
|
|
run_seed() {
|
|
local seed_file=$1
|
|
local seed_name=$(basename "$seed_file")
|
|
|
|
if [ -f "$seed_file" ]; then
|
|
echo -e "${YELLOW}→ Cargando: ${NC}${seed_name}..."
|
|
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -f "$seed_file" -q
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN} ✓ ${seed_name} cargado correctamente${NC}"
|
|
else
|
|
echo -e "${RED} ✗ Error al cargar ${seed_name}${NC}"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo -e "${RED} ✗ Archivo no encontrado: ${seed_name}${NC}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Verificar conexión
|
|
echo -e "${YELLOW}Verificando conexión a la base de datos...${NC}"
|
|
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "SELECT 1" > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}✗ No se pudo conectar a la base de datos${NC}"
|
|
echo -e "${RED} Verifica las credenciales y que el servidor esté ejecutándose${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}✓ Conexión exitosa${NC}"
|
|
echo ""
|
|
|
|
# Array de seeds en orden de ejecución
|
|
# IMPORTANTE: El orden respeta dependencias FK
|
|
# - 02b requiere: 02 (usuarios), 04 (fraccionamientos)
|
|
# - 08 requiere: 02b (employees, puestos para EPP)
|
|
# - 11 requiere: 04 (lotes para asignación)
|
|
SEEDS=(
|
|
"01-core-catalogs.sql"
|
|
"02-users-profiles.sql"
|
|
"03-empresa-tenant.sql"
|
|
"04-proyectos-obras.sql"
|
|
"02b-hr-employees.sql"
|
|
"05-presupuestos.sql"
|
|
"06-estimaciones.sql"
|
|
"07-avances-calidad.sql"
|
|
"08-hse.sql"
|
|
"09-finanzas.sql"
|
|
"10-activos-documentos.sql"
|
|
"11-infonavit.sql"
|
|
)
|
|
|
|
# Ejecutar seeds
|
|
echo -e "${BLUE}Iniciando carga de seeds...${NC}"
|
|
echo ""
|
|
|
|
TOTAL=${#SEEDS[@]}
|
|
CURRENT=0
|
|
|
|
for seed in "${SEEDS[@]}"; do
|
|
CURRENT=$((CURRENT + 1))
|
|
echo -e "${BLUE}[${CURRENT}/${TOTAL}]${NC}"
|
|
run_seed "${SCRIPT_DIR}/${seed}"
|
|
echo ""
|
|
done
|
|
|
|
echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN} ✓ TODOS LOS SEEDS CARGADOS EXITOSAMENTE${NC}"
|
|
echo -e "${BLUE}══════════════════════════════════════════════════════════════${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Usuarios demo disponibles:${NC}"
|
|
echo " - admin@demo.com / Demo2026! (Super Admin)"
|
|
echo " - director@demo.com / Demo2026! (Director)"
|
|
echo " - gerente1@demo.com / Demo2026! (Gerente Obra)"
|
|
echo " - residente1@demo.com / Demo2026! (Residente)"
|
|
echo ""
|
|
echo -e "${YELLOW}Proyectos demo:${NC}"
|
|
echo " - Residencial Las Palmas (horizontal)"
|
|
echo " - Torre Diamante (vertical)"
|
|
echo " - Plaza Central (comercial)"
|
|
echo ""
|
|
echo -e "${YELLOW}Datos adicionales:${NC}"
|
|
echo " - 15 empleados HR con asignación a obras"
|
|
echo " - 7 derechohabientes INFONAVIT"
|
|
echo " - EPP asignado y matriz puesto-EPP"
|
|
echo ""
|