*/ public function __invoke(GetSubjectsQuery $query): PaginatedResult { /* @var PaginatedResult */ return $this->cache->getOrLoad( 'subjects', $query->tenantId, $this->cacheParams($query), fn (): PaginatedResult => $this->reader->findPaginated( tenantId: $query->tenantId, schoolId: $query->schoolId, search: $query->search, page: $query->page, limit: $query->limit, ), ); } /** * @return array */ private function cacheParams(GetSubjectsQuery $query): array { return [ 'page' => $query->page, 'limit' => $query->limit, 'school_id' => $query->schoolId, 'search' => $query->search, ]; } }