diff --git a/app/Http/Middleware/CacheMiddleware.php b/app/Http/Middleware/CacheMiddleware.php index 0442f82e..a126ce99 100644 --- a/app/Http/Middleware/CacheMiddleware.php +++ b/app/Http/Middleware/CacheMiddleware.php @@ -43,14 +43,15 @@ final class CacheMiddleware /** - * Handle an incoming request. - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed + * @param $request + * @param Closure $next + * @param $cache_lifetime + * @return JsonResponse */ - public function handle($request, Closure $next) + public function handle($request, Closure $next, $cache_lifetime) { Log::debug('cache middleware invoked ...'); + $cache_lifetime = intval($cache_lifetime); if ($request->getMethod() !== 'GET') { // short circuit @@ -72,8 +73,6 @@ final class CacheMiddleware } } - $cache_lifetime = intval(Config::get('server.response_cache_lifetime', 300)); - if (str_contains($request->getPathInfo(), '/me')) { $key .= ':' . $this->context->getCurrentUserExternalId(); diff --git a/app/Http/routes.php b/app/Http/routes.php index f1c0ee22..00999740 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -11,6 +11,8 @@ | */ +use Illuminate\Support\Facades\Config; + //OAuth2 Protected API Route::group(array( 'namespace' => 'App\Http\Controllers', @@ -49,7 +51,7 @@ Route::group(array( Route::group(array('prefix' => '{id}'), function () { - Route::get('', [ 'middleware' => 'cache', 'uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); + Route::get('', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_summit_response_lifetime', 300), 'uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); Route::get('entity-events', 'OAuth2SummitApiController@getSummitEntityEvents'); @@ -99,13 +101,13 @@ Route::group(array( Route::group(array('prefix' => '{event_id}'), function () { Route::get('', 'OAuth2SummitEventsApiController@getEvent'); - Route::get('/published', 'OAuth2SummitEventsApiController@getScheduledEvent'); + Route::get('/published', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_published_event_response_lifetime', 300), 'uses' => 'OAuth2SummitEventsApiController@getScheduledEvent']); Route::put('', [ 'middleware' => 'auth.user:administrators', 'uses' => 'OAuth2SummitEventsApiController@updateEvent' ]); Route::delete('', [ 'middleware' => 'auth.user:administrators', 'uses' => 'OAuth2SummitEventsApiController@deleteEvent' ]); Route::put('/publish', [ 'middleware' => 'auth.user:administrators', 'uses' => 'OAuth2SummitEventsApiController@publishEvent']); Route::delete('/publish', [ 'middleware' => 'auth.user:administrators', 'uses' => 'OAuth2SummitEventsApiController@unPublishEvent']); Route::post('/feedback', 'OAuth2SummitEventsApiController@addEventFeedback'); - Route::get('/feedback/{attendee_id?}', 'OAuth2SummitEventsApiController@getEventFeedback')->where('attendee_id', 'me|[0-9]+'); + Route::get('/feedback/{attendee_id?}', ['middleware' => 'cache:'.Config::get('cache_api_response.get_event_feedback_response_lifetime', 300), 'uses' => 'OAuth2SummitEventsApiController@getEventFeedback'] )->where('attendee_id', 'me|[0-9]+'); }); }); diff --git a/app/Models/Foundation/Summit/Summit.php b/app/Models/Foundation/Summit/Summit.php index 918250b1..400002df 100644 --- a/app/Models/Foundation/Summit/Summit.php +++ b/app/Models/Foundation/Summit/Summit.php @@ -375,7 +375,7 @@ class Summit extends SilverstripeBaseModel } /** - * @ORM\ManyToOne(targetEntity="models\main\File", fetch="EAGER") + * @ORM\ManyToOne(targetEntity="models\main\File") * @ORM\JoinColumn(name="LogoID", referencedColumnName="ID") * @var File */ diff --git a/app/Repositories/Summit/Doctrine/DoctrineSummitRepository.php b/app/Repositories/Summit/Doctrine/DoctrineSummitRepository.php index fc1b58bb..235f2d69 100644 --- a/app/Repositories/Summit/Doctrine/DoctrineSummitRepository.php +++ b/app/Repositories/Summit/Doctrine/DoctrineSummitRepository.php @@ -1,4 +1,5 @@ getEntityManager()->createQueryBuilder() + $res = $this->getEntityManager()->createQueryBuilder() ->select("s") ->from(\models\summit\Summit::class, "s") ->where('s.active = 1') - ->orderBy('s.begin_date','DESC') - ->setCacheable(true) - ->setCacheRegion('current_summit_region') + ->orderBy('s.begin_date', 'DESC') ->getQuery() + ->setCacheable(true) + ->setCacheRegion("summit_region") ->getResult(); - if(count($res) == 0) return null; + if (count($res) == 0) return null; return $res[0]; } } \ No newline at end of file diff --git a/config/cache_api_response.php b/config/cache_api_response.php new file mode 100644 index 00000000..6413add6 --- /dev/null +++ b/config/cache_api_response.php @@ -0,0 +1,19 @@ + env('CACHE_API_RESPONSE_GET_SUMMIT_LIFETIME', 300), + 'get_event_feedback_response_lifetime' => env('CACHE_API_RESPONSE_GET_EVENT_FEEDBACK_LIFETIME', 300), + 'get_published_event_response_lifetime' => env('CACHE_API_RESPONSE_GET_PUBLISHED_EVENT_LIFETIME', 300), +]; \ No newline at end of file