feat: add Station, StationPrice, StationPriceCurrent, StationPriceArchive models and factories
This commit is contained in:
50
database/factories/StationFactory.php
Normal file
50
database/factories/StationFactory.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Station;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/** @extends Factory<Station> */
|
||||
class StationFactory extends Factory
|
||||
{
|
||||
public function definition(): array
|
||||
{
|
||||
$trading = $this->faker->company();
|
||||
|
||||
return [
|
||||
'node_id' => hash('sha256', $this->faker->unique()->uuid()),
|
||||
'trading_name' => $trading,
|
||||
'brand_name' => $trading,
|
||||
'is_same_trading_and_brand' => true,
|
||||
'is_supermarket' => false,
|
||||
'is_motorway_service_station' => false,
|
||||
'is_supermarket_service_station' => false,
|
||||
'temporary_closure' => false,
|
||||
'permanent_closure' => false,
|
||||
'permanent_closure_date' => null,
|
||||
'public_phone_number' => null,
|
||||
'address_line_1' => $this->faker->streetAddress(),
|
||||
'address_line_2' => null,
|
||||
'city' => $this->faker->city(),
|
||||
'county' => null,
|
||||
'country' => 'England',
|
||||
'postcode' => strtoupper($this->faker->postcode()),
|
||||
'lat' => $this->faker->latitude(49.9, 60.9),
|
||||
'lng' => $this->faker->longitude(-8.2, 1.8),
|
||||
'amenities' => [],
|
||||
'opening_times' => null,
|
||||
'fuel_types' => ['E10', 'E5'],
|
||||
'last_seen_at' => now(),
|
||||
];
|
||||
}
|
||||
|
||||
public function supermarket(): static
|
||||
{
|
||||
return $this->state([
|
||||
'trading_name' => 'Tesco',
|
||||
'brand_name' => 'Tesco',
|
||||
'is_supermarket' => true,
|
||||
]);
|
||||
}
|
||||
}
|
||||
24
database/factories/StationPriceCurrentFactory.php
Normal file
24
database/factories/StationPriceCurrentFactory.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Enums\FuelType;
|
||||
use App\Models\Station;
|
||||
use App\Models\StationPriceCurrent;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/** @extends Factory<StationPriceCurrent> */
|
||||
class StationPriceCurrentFactory extends Factory
|
||||
{
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'station_id' => Station::factory(),
|
||||
'fuel_type' => FuelType::E10,
|
||||
'price_pence' => $this->faker->numberBetween(12000, 18000),
|
||||
'price_effective_at' => now()->subHour(),
|
||||
'price_reported_at' => now()->subMinutes(30),
|
||||
'recorded_at' => now(),
|
||||
];
|
||||
}
|
||||
}
|
||||
24
database/factories/StationPriceFactory.php
Normal file
24
database/factories/StationPriceFactory.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Enums\FuelType;
|
||||
use App\Models\Station;
|
||||
use App\Models\StationPrice;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/** @extends Factory<StationPrice> */
|
||||
class StationPriceFactory extends Factory
|
||||
{
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'station_id' => Station::factory(),
|
||||
'fuel_type' => FuelType::E10,
|
||||
'price_pence' => $this->faker->numberBetween(12000, 18000),
|
||||
'price_effective_at' => now()->subDays($this->faker->numberBetween(1, 30)),
|
||||
'price_reported_at' => now()->subDays($this->faker->numberBetween(1, 30)),
|
||||
'recorded_at' => now(),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user