From 0ca7b94cc0e64388086795d4b836db28e63d92bb Mon Sep 17 00:00:00 2001 From: Brian Rogers Date: Thu, 9 Apr 2026 16:35:18 -0600 Subject: [PATCH] adding products --- app/Models/Product.php | 14 ++++++ database/factories/ProductFactory.php | 26 +++++++++++ ...026_04_09_222641_create_products_table.php | 30 +++++++++++++ database/seeders/DatabaseSeeder.php | 1 + resources/js/pages/Home.vue | 44 +++++++++++++++++++ routes/api.php | 2 +- routes/web.php | 9 +++- 7 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 app/Models/Product.php create mode 100644 database/factories/ProductFactory.php create mode 100644 database/migrations/2026_04_09_222641_create_products_table.php create mode 100644 resources/js/pages/Home.vue diff --git a/app/Models/Product.php b/app/Models/Product.php new file mode 100644 index 0000000..bdbe184 --- /dev/null +++ b/app/Models/Product.php @@ -0,0 +1,14 @@ + */ + use HasFactory; + + protected $fillable = ['name', 'description', 'price_cents']; +} diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php new file mode 100644 index 0000000..893baef --- /dev/null +++ b/database/factories/ProductFactory.php @@ -0,0 +1,26 @@ + + */ +class ProductFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->words(3, true), + 'description' => $this->faker->sentence(12), + 'price_cents' => $this->faker->numberBetween(499, 9999), + ]; + } +} diff --git a/database/migrations/2026_04_09_222641_create_products_table.php b/database/migrations/2026_04_09_222641_create_products_table.php new file mode 100644 index 0000000..ad8c1ec --- /dev/null +++ b/database/migrations/2026_04_09_222641_create_products_table.php @@ -0,0 +1,30 @@ +id(); + $table->string('name'); + $table->text('description'); + $table->unsignedInteger('price_cents'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('products'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d01a0ef..5ca871e 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,6 +2,7 @@ namespace Database\Seeders; +use App\Models\Product; use App\Models\User; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; diff --git a/resources/js/pages/Home.vue b/resources/js/pages/Home.vue new file mode 100644 index 0000000..b3e8d06 --- /dev/null +++ b/resources/js/pages/Home.vue @@ -0,0 +1,44 @@ + + + diff --git a/routes/api.php b/routes/api.php index 53811aa..ca0bca0 100644 --- a/routes/api.php +++ b/routes/api.php @@ -4,6 +4,6 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; Route::get('/cart', function (Request $request) { - return $request->user(); + return $request->user()->cart(); }); //})->middleware('auth:sanctum'); diff --git a/routes/web.php b/routes/web.php index bb696d1..088b46c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,11 +1,16 @@ Features::enabled(Features::registration()), -])->name('home'); +])->name('home');*/ + +Route::get('/', fn () => inertia('Home', [ + 'products' => Product::all(), +]))->name('home'); Route::middleware(['auth', 'verified'])->group(function () { Route::inertia('dashboard', 'Dashboard')->name('dashboard');