jikan-rest/database/factories/JikanModelFactory.php

53 lines
1.5 KiB
PHP
Raw Normal View History

2022-12-15 14:47:09 +00:00
<?php
namespace Database\Factories;
use App\CarbonDateRange;
use Jikan\Model\Common\DateRange;
2022-12-15 14:47:09 +00:00
use JMS\Serializer\Serializer;
use \Illuminate\Database\Eloquent\Factories\Factory;
use Spatie\Enum\Laravel\Faker\FakerEnumProvider;
2024-05-31 18:28:47 +01:00
use Illuminate\Support\Str;
2022-12-15 14:47:09 +00:00
abstract class JikanModelFactory extends Factory
{
public function configure(): JikanModelFactory|static
{
$this->faker->addProvider(new FakerEnumProvider($this->faker));
2024-05-31 18:28:47 +01:00
if (array_key_exists("GITHUB_JOB", $_ENV) && $_ENV["GITHUB_JOB"] !== "") {
$this->faker->seed($_ENV["GITHUB_JOB"]);
} else {
$this->faker->seed(Str::random());
}
return $this;
}
2022-12-15 14:47:09 +00:00
/**
* @inheritDoc
*/
2022-12-15 14:50:31 +00:00
public function definition(): array
2022-12-15 15:57:12 +00:00
{
return $this->serializeStateDefinition($this->definitionInternal());
}
public function serializeStateDefinition($stateDefinition): array
2022-12-15 14:47:09 +00:00
{
/**
* @var Serializer $serializer
*/
$serializer = app("SerializerV4");
$translated = array_merge(array(), $stateDefinition);
foreach ($stateDefinition as $k => $v)
{
if ($v instanceof DateRange || $v instanceof CarbonDateRange)
{
$converted = $serializer->toArray([$k => $v]);
$translated[$k] = $converted[$k];
}
}
return $translated;
2022-12-15 14:47:09 +00:00
}
protected abstract function definitionInternal(): array;
}