# Guía de Migración a MySQL/MariaDB

## Requisitos Previos

1. **MySQL 8.0+** o **MariaDB 10.5+** instalado
2. **Node.js 18+** instalado
3. Acceso a la base de datos con permisos de creación

## Pasos de Migración

### 1. Crear la Base de Datos

Conecta a MySQL/MariaDB y ejecuta:

```sql
CREATE DATABASE escuelas_deportivas
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

-- Opcional: Crear usuario específico
CREATE USER 'escuelas_app'@'localhost' IDENTIFIED BY 'TU_PASSWORD_SEGURO';
GRANT ALL PRIVILEGES ON escuelas_deportivas.* TO 'escuelas_app'@'localhost';
FLUSH PRIVILEGES;
```

### 2. Configurar la Conexión

Edita el archivo `.env` en `nextjs_space/` y actualiza:

```env
DATABASE_URL="mysql://USUARIO:PASSWORD@HOST:3306/escuelas_deportivas"
```

**Ejemplos:**
```env
# Conexión local
DATABASE_URL="mysql://root:password@localhost:3306/escuelas_deportivas"

# Conexión remota
DATABASE_URL="mysql://escuelas_app:miPassword@192.168.1.100:3306/escuelas_deportivas"

# MariaDB en Docker
DATABASE_URL="mysql://root:rootpass@localhost:3307/escuelas_deportivas"
```

### 3. Generar el Cliente Prisma

```bash
cd nextjs_space
yarn prisma generate
```

### 4. Crear las Tablas

```bash
yarn prisma db push
```

### 5. Ejecutar el Seed (Datos Iniciales)

```bash
yarn prisma db seed
```

### 6. Verificar la Conexión

```bash
yarn prisma studio
```

Esto abrirá una interfaz web en http://localhost:5555 para ver los datos.

## Cambios Realizados en el Schema

### Tipos de Datos Convertidos

| Campo Original | Tipo PostgreSQL | Tipo MySQL |
|---------------|-----------------|------------|
| categorias | String[] | Json |
| certificaciones | String[] | Json |
| especialidades | String[] | Json |
| diasSemana | String[] | Json |
| diasPreferidos | String[] | Json |

### Índices Añadidos

Se agregaron índices para las relaciones foreign key (requerido por MySQL):
- `@@index([userId])` en Account y Session
- `@@index([provinciaId])` en Comuna
- `@@index([deporteId])` en EscuelaDeporte e InstructorDeporte
- Otros índices necesarios para las relaciones

## Solución de Problemas

### Error: "Access denied for user"
Verifica las credenciales en DATABASE_URL y que el usuario tenga permisos.

### Error: "Unknown database"
Asegúrate de haber creado la base de datos primero.

### Error: "Connection refused"
Verifica que MySQL/MariaDB esté corriendo y el puerto sea correcto.

### Error con caracteres especiales en password
Encoda los caracteres especiales en la URL:
- `@` → `%40`
- `#` → `%23`
- `:` → `%3A`

## Estructura de la Base de Datos

La aplicación utiliza las siguientes tablas principales:

- **User, Account, Session**: Autenticación (NextAuth)
- **Deporte**: Catálogo de deportes
- **Provincia, Comuna**: Ubicaciones geográficas
- **Escuela, Sede**: Instituciones deportivas
- **Instructor, UbicacionInstructor**: Profesores/entrenadores
- **Actividad**: Clases y entrenamientos
- **Inscripcion**: Registros de estudiantes
- **Album, Foto**: Galería de imágenes
- **ContenidoSitio, ConfiguracionSitio**: CMS

## Comandos Útiles

```bash
# Regenerar cliente Prisma
yarn prisma generate

# Ver estructura actual
yarn prisma db pull

# Crear migración
yarn prisma migrate dev --name nombre_migracion

# Reset completo (¡BORRA DATOS!)
yarn prisma migrate reset

# Abrir interfaz visual
yarn prisma studio
```
