Add photo management features, update database configuration, and enhance park model seeding

This commit is contained in:
pacnpal
2025-02-25 15:44:21 -05:00
parent 15b2d4ebcf
commit b4462ba89e
31 changed files with 2700 additions and 71 deletions

View File

@@ -17,12 +17,8 @@ class OperatorFactory extends Factory
'description' => fake()->paragraph(),
'website' => fake()->url(),
'headquarters' => fake()->city() . ', ' . fake()->country(),
'founded_year' => fake()->year(),
'total_parks' => fake()->numberBetween(1, 10),
'total_rides' => fake()->numberBetween(20, 200),
'annual_visitors' => fake()->numberBetween(1000000, 50000000),
'employee_count' => fake()->numberBetween(1000, 50000),
'revenue' => fake()->numberBetween(100000000, 5000000000),
];
}
}

View File

@@ -26,8 +26,8 @@ class ParkFactory extends Factory
'total_areas' => fake()->numberBetween(3, 8),
'operating_areas' => fake()->numberBetween(2, 8),
'closed_areas' => fake()->numberBetween(0, 2),
'total_rides' => fake()->numberBetween(20, 60),
'total_coasters' => fake()->numberBetween(2, 15),
'ride_count' => fake()->numberBetween(20, 60),
'coaster_count' => fake()->numberBetween(2, 15),
'total_flat_rides' => fake()->numberBetween(10, 30),
'total_water_rides' => fake()->numberBetween(1, 5),
'total_daily_capacity' => fake()->numberBetween(10000, 50000),

View File

@@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('photos', function (Blueprint $table) {
$table->id();
$table->morphs('photoable');
$table->string('title')->nullable();
$table->text('description')->nullable();
$table->string('file_path');
$table->string('file_name');
$table->integer('file_size')->nullable();
$table->string('mime_type')->nullable();
$table->integer('width')->nullable();
$table->integer('height')->nullable();
$table->integer('position')->default(0);
$table->boolean('is_featured')->default(false);
$table->string('alt_text')->nullable();
$table->string('credit')->nullable();
$table->string('source_url')->nullable();
$table->json('metadata')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('photos');
}
};

View File

@@ -19,5 +19,10 @@ class DatabaseSeeder extends Seeder
'name' => 'Test User',
'email' => 'test@example.com',
]);
// Seed parks
$this->call([
ParkSeeder::class,
]);
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace Database\Seeders;
use App\Models\Park;
use App\Enums\ParkStatus;
use Illuminate\Database\Seeder;
class ParkSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Create a test park
Park::create([
'name' => 'Test Park',
'slug' => 'test-park',
'description' => 'This is a test park for demonstrating the photo management system.',
'status' => ParkStatus::OPERATING,
'opening_date' => '2020-01-01',
'size_acres' => 100.5,
'operating_season' => 'Year-round',
'website' => 'https://example.com',
]);
// Create a second park
Park::create([
'name' => 'Adventure World',
'slug' => 'adventure-world',
'description' => 'A thrilling adventure park with exciting rides and attractions.',
'status' => ParkStatus::OPERATING,
'opening_date' => '2015-05-15',
'size_acres' => 250.75,
'operating_season' => 'March to October',
'website' => 'https://adventureworld-example.com',
]);
}
}