From 10dc62241ccaf6268f47c062fdf971d1a0f2e684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 5 Feb 2025 23:38:49 +0100 Subject: [PATCH] feat: add Book resource --- app/Http/Requests/StoreBookRequest.php | 28 +++++++++++++++ app/Http/Requests/UpdateBookRequest.php | 28 +++++++++++++++ app/Models/Book.php | 24 +++++++++++++ database/factories/BookFactory.php | 27 +++++++++++++++ .../2025_02_05_213536_create_books_table.php | 34 +++++++++++++++++++ database/seeders/BookSeeder.php | 17 ++++++++++ 6 files changed, 158 insertions(+) create mode 100644 app/Http/Requests/StoreBookRequest.php create mode 100644 app/Http/Requests/UpdateBookRequest.php create mode 100644 app/Models/Book.php create mode 100644 database/factories/BookFactory.php create mode 100644 database/migrations/2025_02_05_213536_create_books_table.php create mode 100644 database/seeders/BookSeeder.php diff --git a/app/Http/Requests/StoreBookRequest.php b/app/Http/Requests/StoreBookRequest.php new file mode 100644 index 0000000..20a99ad --- /dev/null +++ b/app/Http/Requests/StoreBookRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + // + ]; + } +} diff --git a/app/Http/Requests/UpdateBookRequest.php b/app/Http/Requests/UpdateBookRequest.php new file mode 100644 index 0000000..bbf1d19 --- /dev/null +++ b/app/Http/Requests/UpdateBookRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + // + ]; + } +} diff --git a/app/Models/Book.php b/app/Models/Book.php new file mode 100644 index 0000000..ed0b954 --- /dev/null +++ b/app/Models/Book.php @@ -0,0 +1,24 @@ + 'book'], + denormalizationContext: ['groups' => 'book'], +)] +#[ApiProperty(property: 'title', serialize: new Groups(['book']))] +#[ApiProperty(property: 'isbn', serialize: new Groups(['book']))] +#[ApiProperty(property: 'isbn', serialize: new Groups(['book']))] +#[ApiProperty(property: 'description', serialize: new Groups(['book']))] +class Book extends Model +{ + /** @use HasFactory<\Database\Factories\BookFactory> */ + use HasFactory; +} diff --git a/database/factories/BookFactory.php b/database/factories/BookFactory.php new file mode 100644 index 0000000..43cd7b4 --- /dev/null +++ b/database/factories/BookFactory.php @@ -0,0 +1,27 @@ + + */ +class BookFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'title' => mb_convert_case(fake()->words(4, true), MB_CASE_TITLE), + 'isbn' => fake()->isbn13(), + 'description' => fake()->text(), + 'author' => fake()->name(), + 'publication_date' => fake()->date(), + ]; + } +} diff --git a/database/migrations/2025_02_05_213536_create_books_table.php b/database/migrations/2025_02_05_213536_create_books_table.php new file mode 100644 index 0000000..09db08e --- /dev/null +++ b/database/migrations/2025_02_05_213536_create_books_table.php @@ -0,0 +1,34 @@ +id(); + + $table->string('isbn')->nullable(); + $table->string('title'); + $table->text('description'); + $table->string('author'); + $table->date('publication_date')->nullable(); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('books'); + } +}; diff --git a/database/seeders/BookSeeder.php b/database/seeders/BookSeeder.php new file mode 100644 index 0000000..451ca2b --- /dev/null +++ b/database/seeders/BookSeeder.php @@ -0,0 +1,17 @@ +create(); + } +}