feat:fix data importation
This commit is contained in:
Executable
+149
@@ -0,0 +1,149 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Import complete courses from MySQL with basic structure (modules and lessons)
|
||||
|
||||
CMS_API_URL="http://localhost:3001"
|
||||
EMAIL="admin@norteamericano.cl"
|
||||
PASSWORD="Admin123!"
|
||||
|
||||
echo "📚 Importación de Cursos desde MySQL"
|
||||
echo "======================================"
|
||||
echo ""
|
||||
|
||||
# Step 1: Login to get JWT token
|
||||
echo "🔑 Obteniendo token de autenticación..."
|
||||
TOKEN=$(curl -s -X POST "$CMS_API_URL/auth/login" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"email\":\"$EMAIL\",\"password\":\"$PASSWORD\"}" \
|
||||
| jq -r '.token')
|
||||
|
||||
if [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ]; then
|
||||
echo "❌ Error: No se pudo obtener el token. Verifica las credenciales."
|
||||
echo " Credenciales usadas: $EMAIL / $PASSWORD"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Token obtenido: ${TOKEN:0:30}..."
|
||||
echo ""
|
||||
|
||||
# Step 2: Import metadata first (courses and plans)
|
||||
echo "📋 Importando metadatos de cursos y planes..."
|
||||
METADATA_RESULT=$(curl -s -X POST "$CMS_API_URL/question-bank/import-mysql-all" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-d '{"import_metadata_only": true}')
|
||||
|
||||
echo "📊 Resultado:"
|
||||
echo "$METADATA_RESULT" | jq '.metadata' 2>/dev/null || echo "$METADATA_RESULT"
|
||||
|
||||
STUDY_PLANS=$(echo "$METADATA_RESULT" | jq -r '.metadata.study_plans_imported // 0')
|
||||
COURSES=$(echo "$METADATA_RESULT" | jq -r '.metadata.courses_imported // 0')
|
||||
|
||||
echo ""
|
||||
echo "✅ Metadatos importados:"
|
||||
echo " - Planes de estudio: $STUDY_PLANS"
|
||||
echo " - Cursos: $COURSES"
|
||||
echo ""
|
||||
|
||||
# Step 3: Show available courses
|
||||
echo "📚 Cursos disponibles para importar:"
|
||||
echo "-------------------------------------"
|
||||
COURSE_LIST=$(curl -s -X GET "$CMS_API_URL/question-bank/mysql-courses" \
|
||||
-H "Authorization: Bearer $TOKEN")
|
||||
|
||||
echo "$COURSE_LIST" | jq -r '.[] | " ID: \(.id_cursos) | \(.nombre_curso) | Plan: \(.nombre_plan) | Duración: \(.duracion)h"'
|
||||
|
||||
echo ""
|
||||
|
||||
# Step 4: Ask user which course to import
|
||||
read -p "Ingresa el ID del curso a importar (o 'all' para importar todos, o 'q' para salir): " COURSE_ID
|
||||
|
||||
if [ "$COURSE_ID" = "q" ]; then
|
||||
echo "👋 Operación cancelada"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$COURSE_ID" = "all" ]; then
|
||||
echo ""
|
||||
echo "📦 Importando TODOS los cursos..."
|
||||
|
||||
# Get all course IDs
|
||||
COURSE_IDS=$(echo "$COURSE_LIST" | jq -r '.[].id_cursos')
|
||||
|
||||
TOTAL=0
|
||||
SUCCESS=0
|
||||
FAILED=0
|
||||
|
||||
for CID in $COURSE_IDS; do
|
||||
TOTAL=$((TOTAL + 1))
|
||||
echo ""
|
||||
echo "📦 Importando curso $CID ($TOTAL/$COURSES)..."
|
||||
|
||||
RESULT=$(curl -s -X POST "$CMS_API_URL/question-bank/import-course-mysql" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-d "{\"mysql_course_id\": $CID}")
|
||||
|
||||
if echo "$RESULT" | jq -e '.course_id' > /dev/null 2>&1; then
|
||||
MESSAGE=$(echo "$RESULT" | jq -r '.message')
|
||||
echo "✅ $MESSAGE"
|
||||
SUCCESS=$((SUCCESS + 1))
|
||||
else
|
||||
ERROR=$(echo "$RESULT" | jq -r '.error // "Error desconocido"')
|
||||
echo "❌ Error al importar curso $CID: $ERROR"
|
||||
FAILED=$((FAILED + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "=== Resumen ==="
|
||||
echo "✅ Cursos importados exitosamente: $SUCCESS"
|
||||
echo "❌ Cursos fallidos: $FAILED"
|
||||
echo "📊 Total procesados: $TOTAL"
|
||||
|
||||
else
|
||||
# Import single course
|
||||
echo ""
|
||||
echo "📦 Importando curso ID: $COURSE_ID..."
|
||||
|
||||
RESULT=$(curl -s -X POST "$CMS_API_URL/question-bank/import-course-mysql" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-d "{\"mysql_course_id\": $COURSE_ID}")
|
||||
|
||||
echo "📋 Resultado:"
|
||||
echo "$RESULT" | jq .
|
||||
|
||||
if echo "$RESULT" | jq -e '.course_id' > /dev/null 2>&1; then
|
||||
COURSE_TITLE=$(echo "$RESULT" | jq -r '.course_title')
|
||||
MODULES=$(echo "$RESULT" | jq -r '.modules_created')
|
||||
LESSONS=$(echo "$RESULT" | jq -r '.lessons_created')
|
||||
|
||||
echo ""
|
||||
echo "✅ ¡Curso importado exitosamente!"
|
||||
echo " - Título: $COURSE_TITLE"
|
||||
echo " - Módulos creados: $MODULES"
|
||||
echo " - Lecciones creadas: $LESSONS"
|
||||
echo ""
|
||||
echo "💡 Puedes ver el curso en: http://localhost:3000/courses"
|
||||
else
|
||||
ERROR=$(echo "$RESULT" | jq -r '.error // .message // "Error desconocido"')
|
||||
echo ""
|
||||
echo "❌ Error al importar el curso: $ERROR"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Comandos Útiles ==="
|
||||
echo ""
|
||||
echo "📋 Ver cursos disponibles:"
|
||||
echo " curl -X GET http://localhost:3001/question-bank/mysql-courses \\"
|
||||
echo " -H \"Authorization: Bearer \$TOKEN\""
|
||||
echo ""
|
||||
echo "📦 Importar un curso específico:"
|
||||
echo " curl -X POST http://localhost:3001/question-bank/import-course-mysql \\"
|
||||
echo " -H \"Content-Type: application/json\" \\"
|
||||
echo " -H \"Authorization: Bearer \$TOKEN\" \\"
|
||||
echo " -d '{\"mysql_course_id\": <ID>}'"
|
||||
echo ""
|
||||
+57
-2
@@ -30,8 +30,20 @@ fi
|
||||
|
||||
echo "✅ Token obtenido: ${TOKEN:0:20}..."
|
||||
|
||||
# Step 2: Import all from MySQL
|
||||
echo "📊 Importando cursos, planes y preguntas desde MySQL..."
|
||||
# Step 3: Get list of courses from MySQL
|
||||
echo ""
|
||||
echo "📋 Obteniendo lista de cursos desde MySQL..."
|
||||
COURSES_RESULT=$(curl -s -X POST "$CMS_API_URL/question-bank/import-mysql-all" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-d '{"import_metadata_only": true}')
|
||||
|
||||
echo "📊 Metadatos de cursos importados:"
|
||||
echo "$COURSES_RESULT" | jq '.metadata // empty' 2>/dev/null || echo "$COURSES_RESULT"
|
||||
|
||||
# Step 4: Import all questions from MySQL
|
||||
echo ""
|
||||
echo "📊 Importando preguntas desde MySQL..."
|
||||
RESULT=$(curl -s -X POST "$CMS_API_URL/question-bank/import-mysql-all" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $TOKEN")
|
||||
@@ -46,3 +58,46 @@ if [ "$IMPORTED" != "null" ] && [ "$IMPORTED" -gt 0 ]; then
|
||||
else
|
||||
echo "⚠️ Revisa el resultado para más detalles"
|
||||
fi
|
||||
|
||||
# Step 5: Import courses with structure (optional - uncomment to enable)
|
||||
# echo ""
|
||||
# echo "📚 Importando cursos con estructura básica..."
|
||||
#
|
||||
# # Get course list
|
||||
# COURSE_LIST=$(curl -s -X GET "$CMS_API_URL/question-bank/mysql-courses" \
|
||||
# -H "Authorization: Bearer $TOKEN")
|
||||
#
|
||||
# echo "📋 Cursos disponibles:"
|
||||
# echo "$COURSE_LIST" | jq '.[] | {id: .id_cursos, name: .nombre_curso, plan: .nombre_plan}'
|
||||
#
|
||||
# # Import first course as example
|
||||
# FIRST_COURSE_ID=$(echo "$COURSE_LIST" | jq -r '.[0].id_cursos')
|
||||
# if [ "$FIRST_COURSE_ID" != "null" ] && [ -n "$FIRST_COURSE_ID" ]; then
|
||||
# echo ""
|
||||
# echo "📦 Importando curso de ejemplo (ID: $FIRST_COURSE_ID)..."
|
||||
# COURSE_IMPORT=$(curl -s -X POST "$CMS_API_URL/question-bank/import-course-mysql" \
|
||||
# -H "Content-Type: application/json" \
|
||||
# -H "Authorization: Bearer $TOKEN" \
|
||||
# -d "{\"mysql_course_id\": $FIRST_COURSE_ID}")
|
||||
#
|
||||
# echo "📋 Resultado:"
|
||||
# echo "$COURSE_IMPORT" | jq .
|
||||
#
|
||||
# MESSAGE=$(echo "$COURSE_IMPORT" | jq -r '.message // "Error al importar"')
|
||||
# echo "✅ $MESSAGE"
|
||||
# fi
|
||||
|
||||
echo ""
|
||||
echo "=== Resumen ==="
|
||||
echo "✅ Metadatos de cursos y planes importados"
|
||||
echo "✅ Preguntas importadas desde MySQL"
|
||||
echo ""
|
||||
echo "💡 Para importar un curso completo con estructura básica, usa:"
|
||||
echo " curl -X POST http://localhost:3001/question-bank/import-course-mysql \\"
|
||||
echo " -H \"Content-Type: application/json\" \\"
|
||||
echo " -H \"Authorization: Bearer \$TOKEN\" \\"
|
||||
echo " -d '{\"mysql_course_id\": <ID_DEL_CURSO>}'"
|
||||
echo ""
|
||||
echo "📋 Para ver los cursos disponibles, usa:"
|
||||
echo " curl -X GET http://localhost:3001/question-bank/mysql-courses \\"
|
||||
echo " -H \"Authorization: Bearer \$TOKEN\""
|
||||
|
||||
Reference in New Issue
Block a user