finished laravel migration

This commit is contained in:
2025-12-29 18:19:24 +01:00
parent bdfbe3ffd6
commit 63bd166a65
218 changed files with 21830 additions and 15154 deletions

View File

@@ -0,0 +1,23 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
use WithoutModelEvents;
/**
* Seed the application's database.
*/
public function run(): void
{
$this->call([
RoleSeeder::class,
UserSeeder::class,
ForumSeeder::class,
]);
}
}

View File

@@ -0,0 +1,61 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Forum;
use Faker\Factory as FakerFactory;
class ForumSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$faker = FakerFactory::create();
for ($categoryIndex = 1; $categoryIndex <= 5; $categoryIndex += 1) {
$category = Forum::create([
'name' => ucfirst($faker->words(2, true)),
'description' => $faker->sentence(),
'type' => 'category',
'parent_id' => null,
'position' => $categoryIndex,
]);
$subcategoryCount = $faker->numberBetween(1, 5);
for ($subIndex = 1; $subIndex <= $subcategoryCount; $subIndex += 1) {
$subcategory = Forum::create([
'name' => ucfirst($faker->words(2, true)),
'description' => $faker->sentence(),
'type' => 'category',
'parent_id' => $category->id,
'position' => $subIndex,
]);
$subForumCount = $faker->numberBetween(1, 5);
for ($forumIndex = 1; $forumIndex <= $subForumCount; $forumIndex += 1) {
Forum::create([
'name' => ucfirst($faker->words(3, true)),
'description' => $faker->sentence(),
'type' => 'forum',
'parent_id' => $subcategory->id,
'position' => $forumIndex,
]);
}
}
$forumCount = $faker->numberBetween(3, 10);
for ($forumIndex = 1; $forumIndex <= $forumCount; $forumIndex += 1) {
Forum::create([
'name' => ucfirst($faker->words(3, true)),
'description' => $faker->sentence(),
'type' => 'forum',
'parent_id' => $category->id,
'position' => $subcategoryCount + $forumIndex,
]);
}
}
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Role;
class RoleSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Role::firstOrCreate(['name' => 'ROLE_ADMIN']);
Role::firstOrCreate(['name' => 'ROLE_USER']);
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use App\Models\Role;
use App\Models\User;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$adminRole = Role::where('name', 'ROLE_ADMIN')->first();
$userRole = Role::where('name', 'ROLE_USER')->first();
$admin = User::firstOrCreate(
['email' => 'tracer@24unix.net'],
[
'name' => 'tracer',
'password' => Hash::make('password'),
'email_verified_at' => now(),
]
);
if ($adminRole) {
$admin->roles()->syncWithoutDetaching([$adminRole->id]);
}
if ($userRole) {
$admin->roles()->syncWithoutDetaching([$userRole->id]);
}
$users = User::factory()->count(100)->create([
'email_verified_at' => now(),
]);
if ($userRole) {
foreach ($users as $user) {
$user->roles()->syncWithoutDetaching([$userRole->id]);
}
}
}
}