Configuración SQLite y API productos Laravel

Clase 3 de 33Curso Avanzado de Laravel

Resumen

Levanta rápido una API de productos en Laravel usando SQLite, migraciones, TDD, Faker, model factories y seeders. Sin servidores extra ni configuraciones complejas: configura la base de datos, genera datos de prueba y valida con tests automatizados. Ideal para un flujo ágil y confiable.

¿Cómo configurar SQLite en Laravel sin servidor?

Configurar una base transaccional liviana con SQLite evita instalar y levantar servicios. Laravel trae el driver listo y se activa con unos ajustes mínimos.

¿Qué cambiar en .env y en config database.php?

  • Crear el archivo de base: database/database.sqlite.
  • En .env, ajustar la conexión: DB_CONNECTION=sqlite.
  • Si existe DB_DATABASE, borrarla para usar el archivo por defecto.
  • Confirmar en config/database.php: el driver sqlite usa database/database.sqlite si no hay DB_DATABASE.

¿Cómo ejecutar migraciones con php artisan migrate?

  • Bajar el servidor, luego correr migraciones.
php artisan migrate
  • Si aparece que la BD no existe: eliminar DB_DATABASE en .env y repetir el comando.
  • Ver tablas creadas con el cliente de PHPStorm: Tools > Database, elegir SQLite y abrir database/database.sqlite. Probar conexión: debe decir que está OK.

¿Cómo generar datos de prueba con Faker, factories y seeders?

Para trabajar la API, se requieren registros confiables y repetibles. Aquí entran Faker, model factories y seeders.

¿Qué hace un model factory con Faker?

  • Un factory define cómo generar datos falsos realistas.
  • En database/factories, ajustar el factory de producto:
  • nombre: con Faker, un nombre al azar.
  • precio: un número entre diez mil y sesenta mil.
  • Resultado: valores aleatorios coherentes para pruebas.

¿Cómo se ejecuta un seeder para poblar la base?

  • En ProductSeeder, usar el factory del modelo para crear N registros y create para insertarlos.
  • En DatabaseSeeder, llamar a ProductSeeder para centralizar su ejecución.
  • Poblar la base de datos:
php artisan db seed
  • Se puede correr varias veces para generar más productos. Verificar en el cliente de base que se inserten registros aleatorios.

¿Cómo construir y probar la API de productos con TDD?

La técnica TDD guía el desarrollo: primero fallan los tests, luego se implementa lo mínimo para hacerlos pasar. Así se asegura funcionalidad y cobertura desde el inicio.

¿Qué crear con make model y controlador API?

  • Al fallar por “no existe la clase producto”, generar el modelo:
php artisan make model product
  • Además, incluir controlador de tipo API y todos los artefactos necesarios con la flag de “all”: migración, factory, seeder y controlador.
  • En la nueva migración, definir columnas de products como nombre (string) y precio (float); luego migrar para crear la tabla.

¿Cómo funcionan index, store, show, update y destroy?

  • index: listar todos los productos con Eloquent y retornarlos.
  • store: crear con Product::create(...) usando los atributos de la petición.
  • show: gracias a la inyección de dependencias, recibe el modelo y lo retorna.
  • update: actualizar el recurso con update(...) desde la petición.
  • destroy: eliminar el producto y responder en JSON con 200.
  • Asignación masiva: en el modelo Product, declarar protected $guarded = []; para permitir crear/actualizar con cualquier atributo permitido.

¿Cómo declarar rutas y verificar con row list?

  • En routes/api.php, definir una ruta tipo recurso con la URI products apuntando al controlador.
  • Listar rutas registradas:
php artisan row:list
  • Tests de integración: crear 5 productos, llamar la ruta y verificar que la cantidad devuelta coincida. Al ejecutar todos, se reportan 5 tests y 10 assertions, lo que confirma la configuración.

Habilidades y conceptos reforzados en este flujo: - Configuración de SQLite en Laravel sin servidor adicional. - Manejo de variables de entorno en .env para la conexión de BD. - Migraciones para versionar esquemas. - Generación de datos con Faker vía model factories y seeders. - Diseño de API REST con controlador de recursos. - Asignación masiva y uso de $guarded. - Inyección de dependencias en métodos del controlador. - Pruebas de integración con TDD para endpoints. - Ruteo de recursos y consulta de rutas con comandos de Artisan.

¿Te animas a replicarlo con un modelo Category? Crea su model, factory, seeder, migration y su endpoint para crear y listar categorías. Cuéntame en comentarios cómo te fue y qué dudas te surgieron.