diff --git a/app/Models/Buildplate.php b/app/Models/Buildplate.php new file mode 100644 index 0000000..132fa9f --- /dev/null +++ b/app/Models/Buildplate.php @@ -0,0 +1,29 @@ +hasMany(Filament::class); + } + + public function manufacturer() + { + return $this->belongsTo(Manufacturer::class); + } + +} diff --git a/app/Models/Extruder.php b/app/Models/Extruder.php new file mode 100644 index 0000000..a32630d --- /dev/null +++ b/app/Models/Extruder.php @@ -0,0 +1,25 @@ +belongsTo(Manufacturer::class); + } + +} diff --git a/app/Models/Filament.php b/app/Models/Filament.php index a15f183..caf5dca 100644 --- a/app/Models/Filament.php +++ b/app/Models/Filament.php @@ -19,7 +19,13 @@ class Filament extends Model 'weight', 'diameter', 'price', - 'stock' + 'finish', + 'image', + 'stock', + 'temp_min', + 'temp_max', + 'buildplate_id', + 'extruder_id' ]; // Filament belongs to a type diff --git a/database/migrations/2025_03_10_151717_create_filament_types.php b/database/migrations/2025_03_10_151717_create_filament_types.php index ec48987..f03e714 100644 --- a/database/migrations/2025_03_10_151717_create_filament_types.php +++ b/database/migrations/2025_03_10_151717_create_filament_types.php @@ -13,9 +13,9 @@ return new class extends Migration { Schema::create('filament_types', function (Blueprint $table) { $table->id(); - $table->timestamps(); $table->string('name'); $table->string('description'); + $table->timestamps(); }); } diff --git a/database/migrations/2025_03_10_183844_create_colors.php b/database/migrations/2025_03_10_182844_create_colors.php similarity index 100% rename from database/migrations/2025_03_10_183844_create_colors.php rename to database/migrations/2025_03_10_182844_create_colors.php index 54ec1ef..f082cb1 100644 --- a/database/migrations/2025_03_10_183844_create_colors.php +++ b/database/migrations/2025_03_10_182844_create_colors.php @@ -13,9 +13,9 @@ return new class extends Migration { Schema::create('colors', function (Blueprint $table) { $table->id(); - $table->timestamps(); $table->string('name')->required(); $table->string('hex')->required(); + $table->timestamps(); }); } diff --git a/database/migrations/2025_03_10_183903_create_manufacturers.php b/database/migrations/2025_03_10_182903_create_manufacturers.php similarity index 92% rename from database/migrations/2025_03_10_183903_create_manufacturers.php rename to database/migrations/2025_03_10_182903_create_manufacturers.php index b99b372..73f94c6 100644 --- a/database/migrations/2025_03_10_183903_create_manufacturers.php +++ b/database/migrations/2025_03_10_182903_create_manufacturers.php @@ -13,12 +13,12 @@ return new class extends Migration { Schema::create('manufacturers', function (Blueprint $table) { $table->id(); - $table->timestamps(); $table->string('name')->required(); $table->string('description')->nullable(); $table->string('website')->nullable(); $table->string('logo')->nullable(); - + $table->integer('filament_count')->default(0); + $table->timestamps(); }); } diff --git a/database/migrations/2025_03_10_183058_create_filaments.php b/database/migrations/2025_03_10_183058_create_filaments.php index 2c6ca4c..1f7fdc5 100644 --- a/database/migrations/2025_03_10_183058_create_filaments.php +++ b/database/migrations/2025_03_10_183058_create_filaments.php @@ -13,15 +13,22 @@ return new class extends Migration { Schema::create('filaments', function (Blueprint $table) { $table->id(); - $table->timestamps(); $table->string('name')->required(); $table->string('description')->nullable(); - $table->string('color_id')->required(); - $table->string('manufacturer_id')->required(); - $table->string('type_id')->required(); + $table->foreignId('color_id')->constrained(); + $table->foreignId('manufacturer_id')->constrained(); + $table->foreignId('filament_type_id')->constrained(); $table->string('weight')->required(); $table->string('diameter')->required(); $table->string('price')->nullable(); + $table->string('finish')->nullable(); + $table->string('image')->nullable(); + $table->integer('stock')->default(0); + $table->integer('temp_min')->nullable(); + $table->integer('temp_max')->nullable(); + $table->integer('buildplate_id')->nullable(); + $table->integer('extruder_id')->nullable(); + $table->timestamps(); }); } diff --git a/database/migrations/2025_03_10_212629_add_filamentcout_to_manufacturers.php b/database/migrations/2025_03_10_212629_add_filamentcout_to_manufacturers.php deleted file mode 100644 index 270fe00..0000000 --- a/database/migrations/2025_03_10_212629_add_filamentcout_to_manufacturers.php +++ /dev/null @@ -1,30 +0,0 @@ -integer('filament_count')->default(0); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('manufacturers', function (Blueprint $table) { - // - $table->dropColumn('filament_count'); - }); - } -}; diff --git a/database/migrations/2025_03_15_185418_create_extruders_table.php b/database/migrations/2025_03_15_185418_create_extruders_table.php new file mode 100644 index 0000000..a2ce04e --- /dev/null +++ b/database/migrations/2025_03_15_185418_create_extruders_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->string('description')->nullable(); + $table->foreignId('manufacturer_id')->constrained(); + $table->string('diameter')->required(); + $table->string('temp_max')->required(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('extruders'); + } +}; diff --git a/database/migrations/2025_03_11_112017_add_filamentstock_to_filaments_table.php b/database/migrations/2025_03_15_185700_create_buildplates_table.php similarity index 50% rename from database/migrations/2025_03_11_112017_add_filamentstock_to_filaments_table.php rename to database/migrations/2025_03_15_185700_create_buildplates_table.php index 28ac742..378c344 100644 --- a/database/migrations/2025_03_11_112017_add_filamentstock_to_filaments_table.php +++ b/database/migrations/2025_03_15_185700_create_buildplates_table.php @@ -11,9 +11,13 @@ return new class extends Migration */ public function up(): void { - Schema::table('filaments', function (Blueprint $table) { - // adding stock to filaments table - $table->integer('stock')->default(0); + Schema::create('buildplates', function (Blueprint $table) { + $table->id(); + $table->string('name'); + $table->string('description'); + $table->foreignId('manufacturer_id')->constrained(); + $table->string('temp_max'); + $table->timestamps(); }); } @@ -22,9 +26,6 @@ return new class extends Migration */ public function down(): void { - Schema::table('filaments', function (Blueprint $table) { - // removing stock from filaments table - $table->dropColumn('stock'); - }); + Schema::dropIfExists('buildplates'); } }; diff --git a/database/seeders/ColorSeeder.php b/database/seeders/ColorSeeder.php index de581c9..2fe0b0e 100644 --- a/database/seeders/ColorSeeder.php +++ b/database/seeders/ColorSeeder.php @@ -13,7 +13,7 @@ class ColorSeeder extends Seeder */ public function run(): void { - // Seed Random Colors + // Seed predefined Colors $colors = [ ['name' => 'Red', 'hex' => '#FF0000'], ['name' => 'Green', 'hex' => '#00FF00'], @@ -28,26 +28,11 @@ class ColorSeeder extends Seeder ['name' => 'White', 'hex' => '#FFFFFF'], ['name' => 'Gold', 'hex' => '#FFD700'], ['name' => 'Silver', 'hex' => '#C0C0C0'], - ['name' => 'Cyan', 'hex' => '#00FFFF'], - ['name' => 'Magenta', 'hex' => '#FF00FF'], - ['name' => 'Lime', 'hex' => '#00FF00'], - ['name' => 'Olive', 'hex' => '#808000'], - ['name' => 'Teal', 'hex' => '#008080'], - ['name' => 'Maroon', 'hex' => '#800000'], - ['name' => 'Navy', 'hex' => '#000080'], - ['name' => 'Aqua', 'hex' => '#00FFFF'], - ['name' => 'Lavender', 'hex' => '#E6E6FA'], - ['name' => 'Turquoise', 'hex' => '#40E0D0'], - ['name' => 'Fuchsia', 'hex' => '#FF00FF'], - ['name' => 'Indigo', 'hex' => '#4B0082'], - ['name' => 'Crimson', 'hex' => '#DC143C'], - ['name' => 'Plum', 'hex' => '#DDA0DD'] + ['name' => 'Cyan', 'hex' => '#00FFFF'] ]; foreach ($colors as $color) { Color::create($color); } - - } } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index c5aa71f..dcf69a5 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -5,6 +5,8 @@ namespace Database\Seeders; use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use Database\Seeders\ColorSeeder; +use Database\Seeders\ManufacturerSeeder; class DatabaseSeeder extends Seeder { @@ -14,6 +16,18 @@ class DatabaseSeeder extends Seeder public function run(): void { User::factory(10)->create(); + + User::create([ + 'name' => 'Admin', + 'email' => 'admin@local', + 'password' => bcrypt('password') + ]); + + $this ->call( + ColorSeeder::class, + ManufacturerSeeder::class + ); + } } diff --git a/database/seeders/ManufacturerSeeder.php b/database/seeders/ManufacturerSeeder.php index f6ffb4a..8773670 100644 --- a/database/seeders/ManufacturerSeeder.php +++ b/database/seeders/ManufacturerSeeder.php @@ -4,9 +4,6 @@ namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Str; - use App\Models\Manufacturer; class ManufacturerSeeder extends Seeder @@ -16,16 +13,15 @@ class ManufacturerSeeder extends Seeder */ public function run(): void { - // Seed Random Manufacturers - for ($i = 0; $i < 10; $i++) { - DB::table('manufacturers')->insert([ - 'name' => Str::random(10), - 'description' => Str::random(40), - 'website' => Str::random(10).'.com' - ]); + // Create predefined Manufacturers + $manufacturers = [ + ['name' => 'Bambulab', 'description' => 'Bambulab is a manufacturer of high quality products.', 'website' => 'https://bambulab.com', 'logo' => 'https://example.com/bambulab-logo.png'] + + ]; + + foreach ($manufacturers as $manufacturer) { + Manufacturer::create($manufacturer); } - - - + } }