From 7d40c5d1cd44f8faa8a1769c163a3d94951573c6 Mon Sep 17 00:00:00 2001 From: Daniel-I-Am Date: Wed, 1 Sep 2021 23:01:54 +0200 Subject: [PATCH] Implement BlogArticle model for recent --- .../Controllers/BlogArticleController.php | 86 +++++++++++++++++++ app/Models/BlogArticle.php | 24 ++++++ database/factories/BlogArticleFactory.php | 31 +++++++ ...9_01_201822_create_blog_articles_table.php | 36 ++++++++ database/seeders/DatabaseSeeder.php | 2 +- routes/api.php | 12 +-- 6 files changed, 181 insertions(+), 10 deletions(-) create mode 100644 app/Http/Controllers/BlogArticleController.php create mode 100644 app/Models/BlogArticle.php create mode 100644 database/factories/BlogArticleFactory.php create mode 100644 database/migrations/2021_09_01_201822_create_blog_articles_table.php diff --git a/app/Http/Controllers/BlogArticleController.php b/app/Http/Controllers/BlogArticleController.php new file mode 100644 index 0000000..b4c42e4 --- /dev/null +++ b/app/Http/Controllers/BlogArticleController.php @@ -0,0 +1,86 @@ +json([]); + } + + /** + * Display a list of recent articles. + * + * @return \Illuminate\Http\JsonResponse + */ + public function recent() + { + $data = BlogArticle::orderBy('date', 'desc')->limit(5)->get(); + + return response()->json($data); + } + + /** + * Display a list of popular articles. + * + * @return \Illuminate\Http\JsonResponse + */ + public function popular() + { + return response()->json([]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function store(Request $request) + { + return response()->json([]); + } + + /** + * Display the specified resource. + * + * @param \App\Models\BlogArticle $blogArticle + * @return \Illuminate\Http\JsonResponse + */ + public function show(BlogArticle $blogArticle) + { + return response()->json([]); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\BlogArticle $blogArticle + * @return \Illuminate\Http\JsonResponse + */ + public function update(Request $request, BlogArticle $blogArticle) + { + return response()->json([]); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\BlogArticle $blogArticle + * @return \Illuminate\Http\JsonResponse + */ + public function destroy(BlogArticle $blogArticle) + { + return response()->json([]); + } +} diff --git a/app/Models/BlogArticle.php b/app/Models/BlogArticle.php new file mode 100644 index 0000000..91c8a24 --- /dev/null +++ b/app/Models/BlogArticle.php @@ -0,0 +1,24 @@ + 'datetime', + 'updated_at' => 'datetime', + 'date' => 'datetime', + ]; +} diff --git a/database/factories/BlogArticleFactory.php b/database/factories/BlogArticleFactory.php new file mode 100644 index 0000000..ac084b0 --- /dev/null +++ b/database/factories/BlogArticleFactory.php @@ -0,0 +1,31 @@ + $this->faker->text(100), + 'date' => $this->faker->dateTimeBetween('100d'), + 'summary' => $this->faker->text(200), + 'content' => $this->faker->text(1000), + ]; + } +} diff --git a/database/migrations/2021_09_01_201822_create_blog_articles_table.php b/database/migrations/2021_09_01_201822_create_blog_articles_table.php new file mode 100644 index 0000000..f40ee44 --- /dev/null +++ b/database/migrations/2021_09_01_201822_create_blog_articles_table.php @@ -0,0 +1,36 @@ +id(); + $table->timestamps(); + + $table->string('title'); + $table->dateTime('date'); + $table->string('summary'); + $table->text('content'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('blog_articles'); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 2d3e35a..beeecc3 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,6 +13,6 @@ class DatabaseSeeder extends Seeder */ public function run() { - // + \App\Models\BlogArticle::factory(50)->create(); } } diff --git a/routes/api.php b/routes/api.php index 3737860..707fc28 100644 --- a/routes/api.php +++ b/routes/api.php @@ -19,15 +19,9 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); }); -Route::get('/blog/recent', function() { - return [ - ['title' => 'asdf', 'id' => 1, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('13s')], - ['title' => 'asdf', 'id' => 2, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('10m')], - ['title' => 'asdf', 'id' => 3, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('15h')], - ['title' => 'asdf', 'id' => 4, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('5d')], - ['title' => 'asdf', 'id' => 5, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('52d')], - ]; -}); +Route::get('/blog/recent', [\App\Http\Controllers\BlogArticleController::class, 'recent']); +Route::get('/blog/popular', [\App\Http\Controllers\BlogArticleController::class, 'popular']); +Route::resource('/blog', \App\Http\Controllers\BlogArticleController::class)->except(['create', 'edit']); Route::get('/blog/popular', function() { return [