feat(install): agregar opcion --empty-academic en install.sh e init_db.py para inicializar base de datos sin datos demo
This commit is contained in:
+36
-9
@@ -21,6 +21,7 @@ hdr() { echo -e "\n${BOLD}${CYAN}══ $* ══${RESET}\n"; }
|
||||
# ─── Argumentos de Línea de Comandos ───────────────────────────────────────────
|
||||
ARG_DB_ACTION=""
|
||||
ARG_KEEP_USERS=false
|
||||
ARG_EMPTY_ACADEMIC=false
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--keep-db)
|
||||
@@ -32,13 +33,19 @@ for arg in "$@"; do
|
||||
--fresh-db|--restore-db)
|
||||
ARG_DB_ACTION="fresh"
|
||||
;;
|
||||
--empty-academic|--no-demo|--clean-db|--without-demo-data)
|
||||
ARG_DB_ACTION="fresh"
|
||||
ARG_EMPTY_ACADEMIC=true
|
||||
;;
|
||||
-h|--help)
|
||||
echo "Uso: sudo bash install.sh [OPCIONES]"
|
||||
echo "Opciones:"
|
||||
echo " --keep-db Mantiene la base de datos existente si ya contiene datos."
|
||||
echo " --keep-users Preserva los usuarios existentes sin volver a crearlos o pisar sus contraseñas."
|
||||
echo " --fresh-db Restaura la base de datos desde cero (DROP y recarga snapshot)."
|
||||
echo " -h, --help Muestra esta ayuda."
|
||||
echo " --keep-db Mantiene la base de datos existente si ya contiene datos."
|
||||
echo " --keep-users Preserva los usuarios existentes sin volver a crearlos o pisar sus contraseñas."
|
||||
echo " --fresh-db Restaura la base de datos desde cero (DROP y recarga snapshot classrooms_db.sql)."
|
||||
echo " --empty-academic Crea la base de datos limpia sin carreras, materias, ciclos lectivos, aulas, edificios ni reservas demo."
|
||||
echo " --no-demo Alias de --empty-academic."
|
||||
echo " -h, --help Muestra esta ayuda."
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
@@ -117,6 +124,7 @@ info "Directorio Frontend: ${FRONTEND_DIR}"
|
||||
info "Usuario de Servicio: ${APP_USER}"
|
||||
info "Preservar Base de Datos: ${ARG_DB_ACTION:-auto (interactivo/detección)}"
|
||||
info "Preservar Usuarios: ${ARG_KEEP_USERS}"
|
||||
info "Base Limpia (Sin Demo): ${ARG_EMPTY_ACADEMIC}"
|
||||
|
||||
# ─── 1. Paquetes Base del Sistema ──────────────────────────────────────────────
|
||||
hdr "1. Actualizando repositorios y paquetes base"
|
||||
@@ -340,22 +348,32 @@ if [ "$DB_EXISTS" = true ] && [ "$TABLE_COUNT" -gt 0 ]; then
|
||||
info "Bandera --keep-db recibida: Se mantiene la base de datos existente intacta."
|
||||
DO_RESTORE_FRESH=false
|
||||
elif [[ "$ARG_DB_ACTION" == "fresh" ]]; then
|
||||
warn "Bandera --fresh-db recibida: Se recreará la base de datos desde cero."
|
||||
if [ "$ARG_EMPTY_ACADEMIC" = true ]; then
|
||||
warn "Bandera --empty-academic recibida: Se inicializará la base de datos limpia sin datos demo."
|
||||
else
|
||||
warn "Bandera --fresh-db recibida: Se recreará la base de datos desde cero con snapshot."
|
||||
fi
|
||||
DO_RESTORE_FRESH=true
|
||||
elif [ -t 0 ]; then
|
||||
echo -e "\n${BOLD}${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
|
||||
echo -e "${BOLD} ¿Qué deseas hacer con la base de datos PostgreSQL existente?${RESET}"
|
||||
echo -e " [1] ${GREEN}${BOLD}Mantener la base de datos actual${RESET} (Recomendado: preserva registros y sincroniza esquema)"
|
||||
echo -e " [2] ${RED}${BOLD}Restaurar desde cero${RESET} (DROP DATABASE y recargar snapshot ${SQL_BACKUP_FILE##*/})"
|
||||
echo -e " [2] ${RED}${BOLD}Restaurar desde cero con datos de muestra${RESET} (DROP DATABASE y recargar snapshot ${SQL_BACKUP_FILE##*/})"
|
||||
echo -e " [3] ${CYAN}${BOLD}Base de datos limpia sin datos demo${RESET} (DROP DATABASE y crear tablas vacías sin carreras, materias, aulas ni sedes)"
|
||||
echo -e "${BOLD}${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
|
||||
|
||||
DB_CHOICE=""
|
||||
read -t 30 -p " Ingresá tu opción [1/2] (por defecto 1 en 30s): " DB_CHOICE || DB_CHOICE="1"
|
||||
read -t 30 -p " Ingresá tu opción [1/2/3] (por defecto 1 en 30s): " DB_CHOICE || DB_CHOICE="1"
|
||||
DB_CHOICE="${DB_CHOICE:-1}"
|
||||
|
||||
if [[ "$DB_CHOICE" == "2" ]]; then
|
||||
warn "Opción [2] seleccionada: Restauración destructiva desde cero."
|
||||
warn "Opción [2] seleccionada: Restauración destructiva desde snapshot demo."
|
||||
DO_RESTORE_FRESH=true
|
||||
ARG_EMPTY_ACADEMIC=false
|
||||
elif [[ "$DB_CHOICE" == "3" ]]; then
|
||||
warn "Opción [3] seleccionada: Base de datos limpia sin carreras, materias, aulas ni sedes demo."
|
||||
DO_RESTORE_FRESH=true
|
||||
ARG_EMPTY_ACADEMIC=true
|
||||
else
|
||||
ok "Opción [1] seleccionada: Mantener base de datos existente."
|
||||
DO_RESTORE_FRESH=false
|
||||
@@ -401,7 +419,12 @@ hdr "9. Aplicando esquema y datos en la base de datos"
|
||||
cd "$BACKEND_DIR"
|
||||
|
||||
if [ "$DO_RESTORE_FRESH" = true ]; then
|
||||
if [[ -f "$SQL_BACKUP_FILE" ]]; then
|
||||
if [ "$ARG_EMPTY_ACADEMIC" = true ]; then
|
||||
info "Inicializando base de datos limpia (sin datos demo de carreras, materias, aulas o sedes)..."
|
||||
pg_cmd -c "DROP DATABASE IF EXISTS \"${DB_NAME}\";" > /dev/null 2>&1 || true
|
||||
pg_cmd -c "CREATE DATABASE \"${DB_NAME}\" OWNER postgres;" > /dev/null 2>&1
|
||||
ok "Base de datos '${DB_NAME}' creada limpia (sin snapshot demo)"
|
||||
elif [[ -f "$SQL_BACKUP_FILE" ]]; then
|
||||
BACKUP_SIZE=$(du -h "$SQL_BACKUP_FILE" | awk '{print $1}')
|
||||
info "Restaurando snapshot '${SQL_BACKUP_FILE##*/}' (${BACKUP_SIZE})..."
|
||||
pg_cmd -c "DROP DATABASE IF EXISTS \"${DB_NAME}\";" > /dev/null 2>&1 || true
|
||||
@@ -436,6 +459,10 @@ if [ "$ARG_KEEP_USERS" = true ]; then
|
||||
INIT_DB_EXTRA_FLAGS+=( "--keep-users" )
|
||||
info "Bandera --keep-users activada: init_db.py preservará los usuarios y contraseñas sin modificarlos ni recrearlos."
|
||||
fi
|
||||
if [ "$ARG_EMPTY_ACADEMIC" = true ]; then
|
||||
INIT_DB_EXTRA_FLAGS+=( "--empty-academic" )
|
||||
info "Bandera --empty-academic activada: init_db.py creará las tablas vacías sin carreras, materias, ciclos lectivos, aulas, edificios ni reservas."
|
||||
fi
|
||||
|
||||
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 PYTHONUTF8=1 PYTHONIOENCODING=utf-8 \
|
||||
PYTHONPATH="${BACKEND_DIR}" FLASK_APP=wsgi.py "${VENV_DIR}/bin/python" -X utf8 init_db.py "${INIT_DB_EXTRA_FLAGS[@]}"
|
||||
|
||||
Reference in New Issue
Block a user