diff --git a/app/Http/Controllers/API/TopicFilter.php b/app/Http/Controllers/API/TopicFilter.php new file mode 100644 index 0000000..826d0ee --- /dev/null +++ b/app/Http/Controllers/API/TopicFilter.php @@ -0,0 +1,31 @@ +validate([ + "keys" => "required" + ]); + + $keys = explode(',', $request->get('keys')); + + return Article::with('source')->whereHas('topics', function ($q) use ($keys) { + $q->whereIn('slug', $keys); + }) + ->latest('published_date') + ->paginate(12); + } +} diff --git a/routes/api.php b/routes/api.php index 1201afa..2145651 100644 --- a/routes/api.php +++ b/routes/api.php @@ -22,6 +22,8 @@ use App\Http\Controllers\API\NewsLetterAPIController; Route::get('today', \API\TodaysPick::class)->name('api.today'); Route::get('recent', \API\RecentArticles::class)->name('api.recent'); +Route::get('topic_filter', \API\TopicFilter::class)->name('api.topic_filter'); + Route::get('topics', [TopicsAPIController::class, 'index'])->name('api.topics.index'); Route::get('topic/{topic:slug}', [TopicsAPIController::class, 'show'])->name('api.topics.show');