erp-construccion-database-v2/seeds/dev/load-dev-seeds.sh
Adrian Flores Cortes 2cd5a1cce2 fix(seeds): Update load script with new seed files
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>
2026-02-03 11:35:44 -06:00

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 ""