X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FHttp%2FControllers%2FEpisodeController.php;h=22ca6dc1309464c370325a41e92ea3f7e6906f77;hb=ebdf8e5f6761de2abd85b01096a67dee62d7d4aa;hp=785a24186f950e258a0dbe1afa851279e0412375;hpb=1d950b14a85fd9eae8795f368ec274c90cb6efd4;p=alttp.git diff --git a/app/Http/Controllers/EpisodeController.php b/app/Http/Controllers/EpisodeController.php index 785a241..22ca6dc 100644 --- a/app/Http/Controllers/EpisodeController.php +++ b/app/Http/Controllers/EpisodeController.php @@ -195,18 +195,28 @@ class EpisodeController extends Controller 'before' => 'nullable|date', 'event' => 'nullable|array', 'event.*' => 'numeric', + 'limit' => 'numeric', + 'offset' => 'numeric', + 'reverse' => 'boolean', ]); - $after = isset($validatedData['after']) ? $validatedData['after'] : Carbon::now(); $before = isset($validatedData['before']) ? $validatedData['before'] : Carbon::now()->add(1, 'days'); + $limit = isset($validatedData['limit']) ? $validatedData['limit'] : 100; + $reverse = isset($validatedData['reverse']) ? $validatedData['reverse'] : false; $episodes = Episode::with(['channels', 'event', 'players', 'players.user']) ->select('episodes.*') ->join('events', 'episodes.event_id', '=', 'events.id') ->where('episodes.confirmed', '=', true) - ->where(DB::raw('DATE_ADD(`episodes`.`start`, INTERVAL COALESCE(`episodes`.`estimate`, 0) SECOND)'), '>=', $after) - ->where('episodes.start', '<=', $before) ->where('events.visible', '=', true) - ->orderBy('episodes.start') + ->orderBy('episodes.start', $reverse ? 'DESC' : 'ASC') ->limit(1000); + if (isset($validatedData['after'])) { + $episodes = $episodes->where( + DB::raw('DATE_ADD(`episodes`.`start`, INTERVAL COALESCE(`episodes`.`estimate`, 0) SECOND)'), + '>=', $validatedData['after']); + } + if (isset($validatedData['before'])) { + $episodes = $episodes->where('episodes.start', '<=', $validatedData['before']); + } if (!empty($validatedData['event'])) { $episodes = $episodes->whereIn('episodes.event_id', $validatedData['event']); } @@ -229,6 +239,7 @@ class EpisodeController extends Controller 'crew.user', ]); } + $episodes->limit($limit); return $episodes->get()->toJson(); }