From dfac41f30a0fc44e89421af856a004ec9eda8b30 Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Tue, 24 Jan 2023 21:54:03 +0100 Subject: [PATCH] db:seed cleanup --- be/app/Models/MasterTask.php | 5 ++++ be/database/factories/AttachmentFactory.php | 2 +- be/database/factories/MasterTaskFactory.php | 12 +++++++- be/database/factories/ProjectFactory.php | 4 +-- be/database/factories/SubTaskFactory.php | 6 ++-- be/database/factories/TimeblockFactory.php | 4 +++ be/database/factories/TimesheetFactory.php | 6 ++-- be/database/seeders/DatabaseSeeder.php | 32 +++++++++++++++------ be/database/seeders/TimeblockSeeder.php | 22 ++++++++++++++ 9 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 be/database/seeders/TimeblockSeeder.php diff --git a/be/app/Models/MasterTask.php b/be/app/Models/MasterTask.php index 68fa209..db4ecbe 100644 --- a/be/app/Models/MasterTask.php +++ b/be/app/Models/MasterTask.php @@ -25,4 +25,9 @@ class MasterTask extends Model { return $this->hasMany(Attachment::class); } + + public function team() + { + return $this->belongsTo(Team::class); + } } diff --git a/be/database/factories/AttachmentFactory.php b/be/database/factories/AttachmentFactory.php index 9ff64ec..f4c6682 100644 --- a/be/database/factories/AttachmentFactory.php +++ b/be/database/factories/AttachmentFactory.php @@ -17,7 +17,7 @@ class AttachmentFactory extends Factory */ public function definition() { - $extension = fake()->fileExtension(); + $extension = fake()->randomElement(['jpg', 'png', 'jpeg', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'csv']); return [ 'original_name' => fake()->words(2, true) . '.' . $extension, diff --git a/be/database/factories/MasterTaskFactory.php b/be/database/factories/MasterTaskFactory.php index 62a5a42..856f5e7 100644 --- a/be/database/factories/MasterTaskFactory.php +++ b/be/database/factories/MasterTaskFactory.php @@ -4,6 +4,7 @@ namespace Database\Factories; use App\Models\Client; use App\Models\Project; +use App\Models\Team; use Illuminate\Database\Eloquent\Factories\Factory; /** @@ -18,10 +19,19 @@ class MasterTaskFactory extends Factory */ public function definition() { - $project = Project::factory()->create(); +// if (Project::all()->count() === 0) { +// $project = Project::factory()->create(); +// } else { +// $project = Project::all()->random(); +// } + + $project = Project::all()->random(); + + $team = Team::all()->random(); return [ 'project_id' => $project->id, + 'team_id' => $team->id, 'title' => 'Master task ' . fake()->words(2, true), 'estimated_time' => fake()->numberBetween(20,100), 'tracked_time' => fake()->numberBetween(4,20), diff --git a/be/database/factories/ProjectFactory.php b/be/database/factories/ProjectFactory.php index 133e953..7e092bc 100644 --- a/be/database/factories/ProjectFactory.php +++ b/be/database/factories/ProjectFactory.php @@ -20,12 +20,12 @@ class ProjectFactory extends Factory { $name = fake()->country(); - $client = Client::factory('App\Models\Client')->create(); + $client = Client::all()->random(); return [ 'client_id' => $client->id, 'name' => 'Project ' . $name, - 'code' => strtoupper(substr($name, 0, 3)) . '-2023-' . rand(1, 9), + 'code' => strtoupper(substr($name, 0, 3)) . '-2023-' . rand(1, 50), ]; diff --git a/be/database/factories/SubTaskFactory.php b/be/database/factories/SubTaskFactory.php index b72de59..ae7ec72 100644 --- a/be/database/factories/SubTaskFactory.php +++ b/be/database/factories/SubTaskFactory.php @@ -19,12 +19,10 @@ class SubTaskFactory extends Factory */ public function definition() { -// $user = User::factory()->create(); -// $mastertask = MasterTask::factory()->hasAttachments(random_int(0 , 3))->create(); + $client = \App\Models\Client::all()->random(); return [ - 'user_id' => 1, -// 'master_task_id' => $mastertask->id, + 'user_id' => $client->id, 'estimated_time' => fake()->numberBetween(1,16), 'tracked_time' => fake()->numberBetween(4,20), 'is_finished' => 0, diff --git a/be/database/factories/TimeblockFactory.php b/be/database/factories/TimeblockFactory.php index e7557c4..a3927d0 100644 --- a/be/database/factories/TimeblockFactory.php +++ b/be/database/factories/TimeblockFactory.php @@ -20,7 +20,11 @@ class TimeblockFactory extends Factory $start = fake()->dateTimeBetween('now', '+3 weeks'); $end = Carbon::instance($start)->addHours(fake()->numberBetween(3, 5)); + // get random subtask + $subtask = \App\Models\SubTask::all()->random(); + return [ + 'sub_task_id' => $subtask->id, 'start' => $start, 'end' => fake()->dateTimeBetween($start, $end), ]; diff --git a/be/database/factories/TimesheetFactory.php b/be/database/factories/TimesheetFactory.php index b811132..e2e1bb0 100644 --- a/be/database/factories/TimesheetFactory.php +++ b/be/database/factories/TimesheetFactory.php @@ -2,6 +2,7 @@ namespace Database\Factories; +use App\Models\SubTask; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; @@ -17,10 +18,11 @@ class TimesheetFactory extends Factory */ public function definition() { - $user = User::factory()->create(); + $subtask = SubTask::all()->random(); return [ - 'user_id' => $user->id, + 'user_id' => $subtask->user->id, + 'sub_task_id' => $subtask->id, 'time' => fake()->numberBetween(1,8), 'synced_to_karat' => null, ]; diff --git a/be/database/seeders/DatabaseSeeder.php b/be/database/seeders/DatabaseSeeder.php index ad6b5a9..5839233 100644 --- a/be/database/seeders/DatabaseSeeder.php +++ b/be/database/seeders/DatabaseSeeder.php @@ -3,9 +3,12 @@ namespace Database\Seeders; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use App\Models\Client; use App\Models\MasterTask; use App\Models\Project; use App\Models\Team; +use App\Models\Timeblock; +use App\Models\Timesheet; use App\Models\User; use Illuminate\Database\Seeder; @@ -18,25 +21,38 @@ class DatabaseSeeder extends Seeder */ public function run() { + Client::factory() + ->count(20) + ->create(); + + Project::factory() + ->hasClient() + ->count(20) + ->create(); + for ($i=0; $i < 5; $i++) { Team::factory() ->hasUsers(random_int(2, 5)) ->create(); } - for ($i=0; $i < 3; $i++) { + for ($i=0; $i < 30; $i++) { MasterTask::factory() ->hasAttachments(random_int(0, 3)) ->hasSubTasks(random_int(3, 5)) ->create(); } -// for ($i=0; $i < 3; $i++) { -// User::factory() -// ->hasSubTasks(3) -//// ->hasAttachments(random_int(0, 3)) -//// ->hasSubTasks(random_int(3, 5)) -// ->create(); -// } + for ($i=0; $i < 30; $i++) { + Timeblock::factory() + ->count(random_int(1, 2)) + ->create(); + } + + for ($i=0; $i < 30; $i++) { + Timesheet::factory() + ->count(random_int(1, 2)) + ->create(); + } } } diff --git a/be/database/seeders/TimeblockSeeder.php b/be/database/seeders/TimeblockSeeder.php new file mode 100644 index 0000000..3c4275c --- /dev/null +++ b/be/database/seeders/TimeblockSeeder.php @@ -0,0 +1,22 @@ +count(1) + ->create(); + } +}