diff --git a/app/Http/Controllers/API/ArticleFilter.php b/app/Http/Controllers/API/ArticleFilter.php new file mode 100644 index 0000000..c308eec --- /dev/null +++ b/app/Http/Controllers/API/ArticleFilter.php @@ -0,0 +1,40 @@ +validate([ + "term" => "required" + ]); + + return Article::with('source')->where('title', 'like', '%' . $request->get('term') . '%') + ->latest('published_date') + ->limit(12) + ->get() + ->transform(function ($article) { + return [ + "title" => $article->title, + "url" => $article->url, + "author" => $article->author, + "featured_image" => $article->featured_image, + "published_date" => $article->published_date, + "meta" => $article->meta, + "source" => $article->source->name, + "body" => $article->body[0], + ]; + }); + } +} diff --git a/routes/api.php b/routes/api.php index 2145651..881d4bd 100644 --- a/routes/api.php +++ b/routes/api.php @@ -24,6 +24,8 @@ Route::get('recent', \API\RecentArticles::class)->name('api.recent'); Route::get('topic_filter', \API\TopicFilter::class)->name('api.topic_filter'); +Route::get('article_filter', \API\ArticleFilter::class)->name('api.article_filter'); + Route::get('topics', [TopicsAPIController::class, 'index'])->name('api.topics.index'); Route::get('topic/{topic:slug}', [TopicsAPIController::class, 'show'])->name('api.topics.show');