ldc-arcadia-api/database/seeders/IncoSheetSeeder.php
Jérémy Munsch 152ee2b5a2
feat(api): add IncoSheets feature with DDD clean architecture, tests & OpenAPI spec
- Use cases: FindAllIncoSheets & FindIncoSheet (filters, pagination, short projection)
- Presentation: controllers, FormRequests with scalar validation, DTOs (camelCase)
- Ports & Adapters: IncoSheetDirectory & EloquentIncoSheetDirectory
- Tests: Pest 4 unit, integration, OpenAPI spectator conformance, dynamic arch tests
- Docs: updated Bruno collection and OpenAPI spec
2026-08-14 11:33:05 +02:00

63 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Infra\Database\Models\IncoCompo;
use Infra\Database\Models\IncoSheet;
final class IncoSheetSeeder extends Seeder
{
/**
* Seed IncoSheet entries (paired with IncoCompo when available, or standalone).
*/
public function run(): void
{
$sheetDataList = [
[
'id' => '1',
'compo_id' => '1',
'name' => 'Poulet Rôti 1kg',
'label' => 'Poulet Rôti aux Herbes',
],
[
'id' => '2',
'compo_id' => '2',
'name' => 'Salade Niçoise 300g',
'label' => 'Salade Niçoise',
],
[
'id' => '3',
'compo_id' => '3',
'name' => 'Lasagnes Bolognaise 400g',
'label' => 'Lasagnes Bolognaise',
],
[
'id' => '4',
'compo_id' => null,
'name' => 'Pain de Mie Brut 500g',
'label' => 'Pain de Mie Nature',
],
];
foreach ($sheetDataList as $data) {
if (! IncoSheet::query()->where('id', $data['id'])->exists()) {
IncoSheet::factory()->create([
'id' => $data['id'],
'compo_id' => $data['compo_id'],
'name' => $data['name'],
'label' => $data['label'],
]);
}
if ($data['compo_id'] !== null && ! IncoCompo::query()->where('id', $data['compo_id'])->exists()) {
IncoCompo::factory()->create([
'id' => $data['compo_id'],
'id_inco' => $data['compo_id'],
]);
}
}
}
}