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
This commit is contained in:
167
scripts/riocata.sh
Executable file
167
scripts/riocata.sh
Executable file
@@ -0,0 +1,167 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user