- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
160 lines
4.3 KiB
Bash
Executable File
160 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# =====================================================
|
|
# LOAD-SEEDS-gamification_system.sh
|
|
# =====================================================
|
|
# Description: Carga seeds de gamification_system según entorno
|
|
# Environments: dev, staging, production
|
|
# Date: 2025-11-02
|
|
# Migrated by: SA-SEEDS-GAM-01
|
|
# =====================================================
|
|
|
|
set -e # Exit on error
|
|
|
|
# =====================================================
|
|
# CONFIGURACIÓN
|
|
# =====================================================
|
|
|
|
ENV=${1:-dev}
|
|
DB_HOST=${DB_HOST:-localhost}
|
|
DB_PORT=${DB_PORT:-5432}
|
|
DB_NAME=${DB_NAME:-gamilit_platform}
|
|
DB_USER=${DB_USER:-postgres}
|
|
|
|
# Colores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# =====================================================
|
|
# FUNCIONES
|
|
# =====================================================
|
|
|
|
log_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
execute_seed() {
|
|
local file=$1
|
|
local filename=$(basename "$file")
|
|
|
|
log_info "Ejecutando: $filename"
|
|
|
|
if psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f "$file" > /dev/null 2>&1; then
|
|
log_success "✓ $filename completado"
|
|
return 0
|
|
else
|
|
log_error "✗ $filename falló"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# =====================================================
|
|
# VALIDACIÓN DE ENTORNO
|
|
# =====================================================
|
|
|
|
if [[ ! "$ENV" =~ ^(dev|staging|production)$ ]]; then
|
|
log_error "Entorno inválido: $ENV"
|
|
echo "Uso: $0 [dev|staging|production]"
|
|
exit 1
|
|
fi
|
|
|
|
log_info "========================================="
|
|
log_info " CARGA DE SEEDS: gamification_system"
|
|
log_info "========================================="
|
|
log_info "Entorno: $ENV"
|
|
log_info "Base de datos: $DB_NAME"
|
|
log_info "Host: $DB_HOST:$DB_PORT"
|
|
log_info "Usuario: $DB_USER"
|
|
log_info "========================================="
|
|
echo ""
|
|
|
|
# Directorio base
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SEED_DIR="$SCRIPT_DIR/$ENV/gamification_system"
|
|
|
|
# Validar que existe el directorio
|
|
if [ ! -d "$SEED_DIR" ]; then
|
|
log_error "No existe el directorio: $SEED_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
# =====================================================
|
|
# CONFIRMACIÓN (solo para production)
|
|
# =====================================================
|
|
|
|
if [ "$ENV" = "production" ]; then
|
|
log_warning "ADVERTENCIA: Vas a ejecutar seeds en PRODUCTION"
|
|
read -p "¿Estás seguro? (escribe 'YES' para continuar): " confirm
|
|
if [ "$confirm" != "YES" ]; then
|
|
log_info "Operación cancelada por el usuario"
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# =====================================================
|
|
# CARGA DE SEEDS POR ENTORNO
|
|
# =====================================================
|
|
|
|
case $ENV in
|
|
dev)
|
|
log_info "Cargando seeds de DEVELOPMENT (todos los datos)..."
|
|
echo ""
|
|
|
|
execute_seed "$SEED_DIR/01-achievement_categories.sql" || exit 1
|
|
execute_seed "$SEED_DIR/02-achievements.sql" || exit 1
|
|
execute_seed "$SEED_DIR/03-leaderboard_metadata.sql" || exit 1
|
|
execute_seed "$SEED_DIR/04-initialize_user_gamification.sql" || exit 1
|
|
|
|
echo ""
|
|
log_success "Seeds de DEV cargados exitosamente"
|
|
log_info "Total de archivos: 4"
|
|
;;
|
|
|
|
staging)
|
|
log_info "Cargando seeds de STAGING (configuración + demo)..."
|
|
echo ""
|
|
|
|
execute_seed "$SEED_DIR/01-achievement_categories.sql" || exit 1
|
|
execute_seed "$SEED_DIR/02-achievements.sql" || exit 1
|
|
execute_seed "$SEED_DIR/03-leaderboard_metadata.sql" || exit 1
|
|
|
|
echo ""
|
|
log_success "Seeds de STAGING cargados exitosamente"
|
|
log_info "Total de archivos: 3"
|
|
;;
|
|
|
|
production)
|
|
log_info "Cargando seeds de PRODUCTION (solo configuración esencial)..."
|
|
echo ""
|
|
|
|
execute_seed "$SEED_DIR/01-achievement_categories.sql" || exit 1
|
|
execute_seed "$SEED_DIR/02-leaderboard_metadata.sql" || exit 1
|
|
|
|
echo ""
|
|
log_success "Seeds de PRODUCTION cargados exitosamente"
|
|
log_info "Total de archivos: 2"
|
|
log_warning "NOTA: No se cargaron achievements demo ni datos de prueba"
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
log_info "========================================="
|
|
log_success "PROCESO COMPLETADO"
|
|
log_info "========================================="
|
|
|
|
exit 0
|