🗃️ Add database schema, models & seeders (Story 1.2)
Migrations (translations, projects, skills, skill_project), Eloquent models with belongsToMany relations, scopes, and test seeders (74 translations FR/EN, 10 skills, 3 projects, 12 skill-project links). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
83
api/database/seeders/SkillProjectSeeder.php
Normal file
83
api/database/seeders/SkillProjectSeeder.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Project;
|
||||
use App\Models\Skill;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class SkillProjectSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$skycel = Project::where('slug', 'skycel-portfolio')->first();
|
||||
$ecommerce = Project::where('slug', 'ecommerce-app')->first();
|
||||
$dashboard = Project::where('slug', 'analytics-dashboard')->first();
|
||||
|
||||
// Skycel Portfolio: Vue.js, Nuxt, Laravel, TailwindCSS, Git
|
||||
$skycel->skills()->attach(Skill::where('slug', 'vuejs')->first()->id, [
|
||||
'level_before' => 2,
|
||||
'level_after' => 4,
|
||||
'level_description_key' => 'skill_project.skycel-portfolio.vuejs.level_description',
|
||||
]);
|
||||
$skycel->skills()->attach(Skill::where('slug', 'nuxt')->first()->id, [
|
||||
'level_before' => 0,
|
||||
'level_after' => 3,
|
||||
'level_description_key' => 'skill_project.skycel-portfolio.nuxt.level_description',
|
||||
]);
|
||||
$skycel->skills()->attach(Skill::where('slug', 'laravel')->first()->id, [
|
||||
'level_before' => 2,
|
||||
'level_after' => 3,
|
||||
'level_description_key' => 'skill_project.skycel-portfolio.laravel.level_description',
|
||||
]);
|
||||
$skycel->skills()->attach(Skill::where('slug', 'tailwindcss')->first()->id, [
|
||||
'level_before' => 1,
|
||||
'level_after' => 3,
|
||||
'level_description_key' => 'skill_project.skycel-portfolio.tailwindcss.level_description',
|
||||
]);
|
||||
$skycel->skills()->attach(Skill::where('slug', 'git')->first()->id, [
|
||||
'level_before' => 3,
|
||||
'level_after' => 4,
|
||||
'level_description_key' => null,
|
||||
]);
|
||||
|
||||
// E-commerce App: Laravel, Vue.js, PHP, Docker
|
||||
$ecommerce->skills()->attach(Skill::where('slug', 'laravel')->first()->id, [
|
||||
'level_before' => 1,
|
||||
'level_after' => 2,
|
||||
'level_description_key' => 'skill_project.ecommerce-app.laravel.level_description',
|
||||
]);
|
||||
$ecommerce->skills()->attach(Skill::where('slug', 'vuejs')->first()->id, [
|
||||
'level_before' => 1,
|
||||
'level_after' => 2,
|
||||
'level_description_key' => 'skill_project.ecommerce-app.vuejs.level_description',
|
||||
]);
|
||||
$ecommerce->skills()->attach(Skill::where('slug', 'php')->first()->id, [
|
||||
'level_before' => 2,
|
||||
'level_after' => 3,
|
||||
'level_description_key' => null,
|
||||
]);
|
||||
$ecommerce->skills()->attach(Skill::where('slug', 'docker')->first()->id, [
|
||||
'level_before' => 0,
|
||||
'level_after' => 1,
|
||||
'level_description_key' => null,
|
||||
]);
|
||||
|
||||
// Analytics Dashboard: TypeScript, Node.js, Git
|
||||
$dashboard->skills()->attach(Skill::where('slug', 'typescript')->first()->id, [
|
||||
'level_before' => 1,
|
||||
'level_after' => 3,
|
||||
'level_description_key' => 'skill_project.analytics-dashboard.typescript.level_description',
|
||||
]);
|
||||
$dashboard->skills()->attach(Skill::where('slug', 'nodejs')->first()->id, [
|
||||
'level_before' => 1,
|
||||
'level_after' => 2,
|
||||
'level_description_key' => 'skill_project.analytics-dashboard.nodejs.level_description',
|
||||
]);
|
||||
$dashboard->skills()->attach(Skill::where('slug', 'git')->first()->id, [
|
||||
'level_before' => 2,
|
||||
'level_after' => 3,
|
||||
'level_description_key' => null,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user