Skip to content

v2.0.0

Choose a tag to compare

@soymgomez soymgomez released this 06 Feb 09:15
· 4 commits to main since this release

Atlas v2.0.0

Major release con mejoras de rendimiento, correcciones de relaciones Eloquent y modernización general del paquete.

Requisitos: PHP 8.3+ · Laravel 11+

Ruta de actualización: consulta UPGRADE.md para los pasos detallados y cambios de ruptura.

Novedades

  • Nuevo comando atlas:update — re-seed de entidades habilitadas con los datos JSON más recientes, respetando la configuración de config('atlas.entities').
  • Parser JSON en streaming — se reemplazó la carga completa en memoria por halaxa/json-machine, eliminando picos de consumo en datasets grandes.
  • Índices de base de datos — nuevos índices en iso2, iso3, region_id, subregion_id, currency_code, state_code, country_id, name (cities) y unique constraint en el pivot country_timezone. Ver migración de upgrade.
  • Validación de dependencias entre entidades — atlas:install y atlas:update ahora verifican que las dependencias requeridas estén habilitadas y abortan si la configuración es inválida.
  • Nueva relación Subregion::region() — BelongsTo hacia Region, antes ausente.
  • Traducciones activas — la carga y publicación de traducciones (atlas-translations) está ahora habilitada.

Mejoras

  • Seeders envueltos en transacciones con desactivación correcta de FK constraints — se evitan estados parciales de datos.
  • Inserción masiva (bulk insert) en CountriesSeeder y construcción de índice previo en TimezonesSeeder para inserciones de pivot más rápidas.
  • Se eliminó el override ini_set('memory_limit', -1).
  • Todos los modelos usan $fillable explícito en lugar de $guarded = [].
  • Claves primarias string declaradas correctamente en Currency (code), Timezone (zone_name) y Language (code).
  • Country::$translations ahora cast a array (consistente con Region y Subregion).
  • Migraciones convertidas a clases anónimas (estándar Laravel 9+).
  • Compatibilidad PHPStan nivel 9 con larastan v3.
  • Suite de tests comprehensiva (relaciones, schema, seeders, comandos, parsing JSON).

Correcciones

  • Country::currency() cambiado de HasOne a BelongsTo — la FK vive ahora en countries.currency_code.
  • Currency::countries() cambiado de BelongsTo a HasMany — una moneda puede pertenecer a múltiples países.
  • Country::region() / subregion() renombrados a singular siguiendo convenciones Laravel.
  • Columnas region → region_name, subregion → subregion_name en la tabla countries — resuelve el conflicto entre columnas y métodos de relación.
  • Typo de config corregido: country_timezon_pivot_tablename → country_timezone_pivot_tablename.
  • Ruta de overrides JSON corregida: resources/json/ → resources/vendor/atlas/json/ (la ruta anterior nunca funcionó por colisión con el directorio del paquete).
  • Typo de método corregido: getOverridedClientProjectResourcesPath() → getOverriddenClientProjectResourcesPath().
  • region_id y currency_code ahora NULLABLE para coincidir con sus constraints ON DELETE SET NULL.
  • FKs hijas cambiadas de RESTRICT a CASCADE en subregions, states, cities y pivot country_timezone.

Eliminado

  • Facade Raiolanetworks\Atlas\Facades\Atlas y clase duplicada Raiolanetworks\Atlas\Atlas.
  • Dependencia spatie/laravel-package-tools.
  • Dependencia explícita de illuminate/contracts (ya provista por laravel/framework).
  • Currency::$thousands_separator eliminado de $fillable (nunca se pobló desde JSON).
  • Soporte para Laravel 10.

Migración automática

La migración de upgrade incluida maneja automáticamente: renombrado de columnas, nullable de FKs, cambio a cascade, nuevos índices y deduplicación de pivots. Solo ejecuta php artisan migrate tras actualizar.

Consulta UPGRADE.md para la guía de migración completa paso a paso.