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