# Capa de Infraestructura

## 📋 Propósito

La **Capa de Infraestructura** contiene las implementaciones concretas de las interfaces definidas en el Dominio. Conecta la lógica de negocio con el mundo exterior (WordPress, MySQL, cache, HTTP).

## 🎯 Responsabilidades

- ✅ Implementar interfaces del Dominio
- ✅ Conectar con frameworks (WordPress)
- ✅ Persistencia (MySQL via wpdb)
- ✅ Cache (WordPress Transients)
- ✅ HTTP (AJAX endpoints)
- ✅ Contiene detalles de implementación

## 📦 Estructura

```
Infrastructure/
├── Persistence/
│   └── WordPress/
│       ├── WordPressComponentRepository.php    (MySQL)
│       └── WordPressDefaultsRepository.php     (Schemas)
├── Services/
│   ├── WordPressValidationService.php          (Validación)
│   ├── WordPressCacheService.php               (Transients)
│   ├── SchemaSyncService.php                   (JSON → BD)
│   └── CleanupService.php                      (Limpieza)
├── API/
│   └── WordPress/
│       └── AjaxController.php                  (Endpoints AJAX)
├── Facades/
│   └── ComponentManager.php                    (API unificada)
├── DI/
│   └── DIContainer.php                         (Dependency Injection)
└── README.md
```

## 🔌 Implementaciones

### Repositories

#### WordPressComponentRepository
Persiste componentes en `wp_roi_theme_components`.

**Métodos**:
- `save(Component)`: INSERT o UPDATE
- `findByName(string)`: Buscar por nombre
- `findAll()`: Obtener todos
- `delete(string)`: Eliminar

#### WordPressDefaultsRepository
Gestiona schemas en `wp_roi_theme_defaults`.

### Services

#### WordPressValidationService
Valida datos contra schemas.

**Estrategia**:
1. Obtener schema de BD
2. Validar estructura
3. Sanitizar con funciones WordPress

#### WordPressCacheService
Cache con WordPress Transients API.

**TTL default**: 1 hora (3600 segundos)

#### SchemaSyncService
Sincroniza schemas desde JSON a BD.

#### CleanupService
Elimina componentes obsoletos.

### API

#### AjaxController
Endpoints AJAX de WordPress.

**Endpoints disponibles**:
- `roi_theme_save_component` (POST)
- `roi_theme_get_component` (GET)
- `roi_theme_delete_component` (POST)
- `roi_theme_sync_schema` (POST)

**Seguridad**:
- Nonce verification
- Capability check (manage_options)

### Facade

#### ComponentManager
API unificada para todo el sistema.

**Uso**:
```php
$manager = new ComponentManager($container);
$result = $manager->saveComponent('top_bar', $data);
```

## 📐 Principios Arquitectónicos

### Dependency Inversion

Infrastructure implementa interfaces del Domain:

```php
class WordPressComponentRepository implements ComponentRepositoryInterface
{
    // Implementación específica de WordPress
}
```

### Separación de Concerns

- **Repositories**: Solo persistencia
- **Services**: Lógica de infraestructura
- **Controller**: Solo HTTP
- **Facade**: Orquestación simple

## 🧪 Testing

Tests de **integración** (usan BD real de WordPress):

```bash
vendor\bin\phpunit tests\Integration\Infrastructure
```

## 🔗 Referencias

- Domain Layer: `../Domain/README.md`
- Application Layer: `../Application/README.md`
