Files
cataRio/scripts/riocata.sh
josedario87 f682c3db51 Inicializar rioCata - Sistema de Catación de Café
- Base de datos PostgreSQL 16 con extensiones JSONB y arrays
- Docker Compose para containerización
- Scripts SQL de inicialización (schema, funciones, índices, datos de prueba)
- Suite de tests de validación (18 tests)
- Queries de ejemplo (17 queries)
- Script helper para gestión (scripts/riocata.sh)
- Documentación completa en README.md

Estructura:
- 4 tablas principales: sesion, auth.users, sesion_participante, muestra, evaluacion
- Tipo ENUM para defectos
- 2 triggers automáticos (updated_at, puntaje_final)
- 19 índices de optimización (GIN, B-tree, funcionales)
- Constraints de validación para arrays y JSONB
- 2 funciones auxiliares para análisis
2025-10-17 17:00:48 -06:00

168 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# rioCata - Script de ayuda para gestión de la base de datos
set -e
COMPOSE="docker-compose"
DB_USER="riocata_user"
DB_NAME="riocata"
# Colores
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
function show_help() {
echo "rioCata - Sistema de Catación de Café"
echo ""
echo "Uso: ./riocata.sh [comando]"
echo ""
echo "Comandos disponibles:"
echo " start - Iniciar servicios"
echo " stop - Detener servicios"
echo " restart - Reiniciar servicios"
echo " reset - Reiniciar servicios y borrar datos (¡CUIDADO!)"
echo " psql - Conectarse a PostgreSQL con psql"
echo " test - Ejecutar tests de validación"
echo " queries - Ejecutar queries de ejemplo"
echo " logs - Ver logs de PostgreSQL"
echo " status - Ver estado de servicios"
echo " backup - Crear backup de la base de datos"
echo " restore FILE - Restaurar backup desde archivo"
echo " help - Mostrar esta ayuda"
echo ""
}
function start_services() {
echo -e "${GREEN}Iniciando servicios...${NC}"
$COMPOSE up -d
echo -e "${GREEN}Esperando que PostgreSQL esté listo...${NC}"
sleep 3
$COMPOSE ps
}
function stop_services() {
echo -e "${YELLOW}Deteniendo servicios...${NC}"
$COMPOSE down
}
function restart_services() {
echo -e "${YELLOW}Reiniciando servicios...${NC}"
$COMPOSE restart
sleep 3
$COMPOSE ps
}
function reset_all() {
echo -e "${RED}¡ADVERTENCIA! Esto borrará TODOS los datos.${NC}"
read -p "¿Estás seguro? (escribe 'SI' para confirmar): " confirm
if [ "$confirm" = "SI" ]; then
echo -e "${RED}Eliminando servicios y datos...${NC}"
$COMPOSE down -v
echo -e "${GREEN}Reiniciando servicios...${NC}"
$COMPOSE up -d
sleep 5
echo -e "${GREEN}Base de datos reinicializada con datos de prueba.${NC}"
else
echo -e "${YELLOW}Operación cancelada.${NC}"
fi
}
function connect_psql() {
echo -e "${GREEN}Conectando a PostgreSQL...${NC}"
echo -e "${YELLOW}Tip: usa \\q para salir${NC}"
$COMPOSE exec postgres psql -U $DB_USER -d $DB_NAME
}
function run_tests() {
echo -e "${GREEN}Ejecutando tests de validación...${NC}"
$COMPOSE exec -T postgres psql -U $DB_USER -d $DB_NAME < postgres/tests/test_all.sql
}
function run_queries() {
echo -e "${GREEN}Ejecutando queries de ejemplo...${NC}"
$COMPOSE exec -T postgres psql -U $DB_USER -d $DB_NAME < postgres/tests/example_queries.sql
}
function show_logs() {
echo -e "${GREEN}Mostrando logs de PostgreSQL...${NC}"
$COMPOSE logs -f postgres
}
function show_status() {
echo -e "${GREEN}Estado de servicios:${NC}"
$COMPOSE ps
}
function create_backup() {
BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).sql"
echo -e "${GREEN}Creando backup en $BACKUP_FILE...${NC}"
$COMPOSE exec -T postgres pg_dump -U $DB_USER $DB_NAME > $BACKUP_FILE
echo -e "${GREEN}Backup creado exitosamente: $BACKUP_FILE${NC}"
}
function restore_backup() {
if [ -z "$1" ]; then
echo -e "${RED}Error: Debes especificar el archivo de backup${NC}"
echo "Uso: ./riocata.sh restore <archivo.sql>"
exit 1
fi
if [ ! -f "$1" ]; then
echo -e "${RED}Error: El archivo $1 no existe${NC}"
exit 1
fi
echo -e "${YELLOW}Restaurando backup desde $1...${NC}"
$COMPOSE exec -T postgres psql -U $DB_USER -d $DB_NAME < "$1"
echo -e "${GREEN}Backup restaurado exitosamente${NC}"
}
# Main
case "${1:-help}" in
start)
start_services
;;
stop)
stop_services
;;
restart)
restart_services
;;
reset)
reset_all
;;
psql)
connect_psql
;;
test)
run_tests
;;
queries)
run_queries
;;
logs)
show_logs
;;
status)
show_status
;;
backup)
create_backup
;;
restore)
restore_backup "$2"
;;
help|--help|-h)
show_help
;;
*)
echo -e "${RED}Comando desconocido: $1${NC}"
echo ""
show_help
exit 1
;;
esac