From dd77a804085cc94177b8b04b86371d63ca2bea0b Mon Sep 17 00:00:00 2001 From: KevinMrkz3221 Date: Thu, 13 Nov 2025 20:18:10 -0600 Subject: [PATCH] =?UTF-8?q?Fix:=20Corregir=20inserci=C3=B3n=20de=20tenant?= =?UTF-8?q?=20y=20relaciones=20en=20PostgreSQL=20usando=20formato=20-c=20e?= =?UTF-8?q?n=20psql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Cambiar de heredoc (< /dev/null 2>&1; then + # Usar docker exec para verificar pg_isready directamente + if docker exec anexo76-postgres-a76 pg_isready -h localhost -U "${POSTGRES_USER}" > /dev/null 2>&1; then echo -e "${GREEN}✓ PostgreSQL está listo${NC}" break fi PG_RETRY_COUNT=$((PG_RETRY_COUNT + 1)) echo "Intento $PG_RETRY_COUNT/$MAX_PG_RETRIES..." - sleep 2 + sleep 1 done if [ $PG_RETRY_COUNT -eq $MAX_PG_RETRIES ]; then - echo -e "${RED}✗ Error: PostgreSQL no está disponible${NC}" + echo -e "${RED}✗ Error: PostgreSQL no está disponible después de $MAX_PG_RETRIES intentos${NC}" exit 1 fi # Insertar o actualizar tenant -PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <&1 -# Obtener el ID del tenant -TENANT_ID=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id FROM a76.tenants WHERE slug = '${TENANT_SLUG}';") -TENANT_ID=$(echo "$TENANT_ID" | xargs) # Trim whitespace +# Obtener el ID del tenant con mejor manejo de errores +echo "Obteniendo ID del tenant..." +TENANT_ID_RESULT=$(docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id FROM a76.tenants WHERE slug = '${TENANT_SLUG}';" 2>&1) + +if [ $? -ne 0 ]; then + echo -e "${RED}✗ Error al consultar el tenant:${NC}" + echo "$TENANT_ID_RESULT" + echo -e "${YELLOW}Verificando si la tabla existe...${NC}" + docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -c "\dt a76.tenants;" + exit 1 +fi + +TENANT_ID=$(echo "$TENANT_ID_RESULT" | xargs) # Trim whitespace if [ -z "$TENANT_ID" ]; then echo -e "${RED}✗ Error: No se pudo obtener el ID del tenant${NC}" + echo "Resultado de la consulta: '$TENANT_ID_RESULT'" + echo -e "${YELLOW}Intentando ver todos los tenants...${NC}" + docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -c "SELECT id, slug FROM a76.tenants LIMIT 10;" exit 1 fi echo -e "${GREEN}✓ Tenant ID: ${TENANT_ID}${NC}" # Insertar company si no existe -COMPANY_EXISTS=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT COUNT(*) FROM a76.company WHERE tenant_id = ${TENANT_ID};") +COMPANY_EXISTS=$(docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT COUNT(*) FROM a76.company WHERE tenant_id = ${TENANT_ID};") COMPANY_EXISTS=$(echo "$COMPANY_EXISTS" | xargs) if [ "$COMPANY_EXISTS" = "0" ]; then - PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <&1 echo -e "${GREEN}✓ Company creada${NC}" else echo -e "${YELLOW}⚠ Company ya existe para este tenant${NC}" fi # Obtener información de la company -COMPANY_INFO=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id, name FROM a76.company WHERE tenant_id = ${TENANT_ID} LIMIT 1;") +COMPANY_INFO=$(docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id, name FROM a76.company WHERE tenant_id = ${TENANT_ID} LIMIT 1;") echo -e "${GREEN}✓ Company: ${COMPANY_INFO}${NC}" @@ -564,14 +564,7 @@ echo -e "${GREEN}✓ Atributo tenant_id asignado al usuario${NC}" # Agregar relación usuario-tenant en la base de datos echo -e "\n${YELLOW}Creando relación usuario-tenant en la base de datos...${NC}" -PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <&1 echo -e "${GREEN}✓ Relación usuario-tenant creada en la base de datos${NC}" @@ -609,5 +602,5 @@ echo -e "\n${YELLOW}Configuración del usuario demo:${NC}" echo -e " ${GREEN}✓${NC} tenant_id actualizado al ID real: ${TENANT_ID}" echo -e " ${GREEN}✓${NC} Relación usuario-tenant creada (rol: admin)" echo -e "\n${YELLOW}Puedes acceder al sistema en:${NC}" -echo -e " ${GREEN}http://localhost:5180${NC}" +echo -e " ${GREEN}http://localhost:5173${NC}" echo -e "\n${GREEN}════════════════════════════════════════════════════════${NC}\n" diff --git a/start.sh b/start.sh index 61308fda..c5c0b66a 100755 --- a/start.sh +++ b/start.sh @@ -155,7 +155,7 @@ echo -e "${GREEN} ✓ Instalación Completada${NC}" echo "=========================================" echo "" echo "Servicios disponibles:" -echo -e " ${GREEN}•${NC} Frontend: ${BLUE}http://localhost:5180${NC}" +echo -e " ${GREEN}•${NC} Frontend: ${BLUE}http://localhost:5173${NC}" echo -e " ${GREEN}•${NC} Backend: ${BLUE}http://localhost:8000/api${NC}" echo -e " ${GREEN}•${NC} API Docs: ${BLUE}http://localhost:8000/api/docs${NC}" echo -e " ${GREEN}•${NC} Keycloak: ${BLUE}http://localhost:8080${NC}"