many(Page::query()->where('status', 'published')); } public function blog(): AnonymousResourceCollection { return $this->many(Blog::query()->published()); } public function news(): AnonymousResourceCollection { return $this->many(News::query()->published()); } public function page(Page $page): ContentResource { abort_unless($page->status === 'published', 404); return new ContentResource($page); } public function blogPost(Blog $blog): ContentResource { abort_unless(Blog::query()->published()->whereKey($blog)->exists(), 404); return new ContentResource($blog); } public function newsArticle(News $news): ContentResource { abort_unless(News::query()->published()->whereKey($news)->exists(), 404); return new ContentResource($news); } private function many(Builder $q): AnonymousResourceCollection { return ContentResource::collection($q->latest('updated_at')->paginate((int) config('api.pagination', 20))); } }