query('per_page', 10); if ($perPage > 100) { throw new QueryValueOutOfRangeHttpException('per_page', 1, 100); } $eggs = QueryBuilder::for(Egg::query()) ->where('nest_id', '=', $nest->id) ->allowedFilters(['id', 'name', 'author']) ->allowedSorts(['id', 'name', 'author']); if ($perPage > 0) { $eggs = $eggs->paginate($perPage); } return $this->fractal->collection($eggs) ->transformWith(EggTransformer::class) ->toArray(); } /** * Returns a single egg. */ public function view(GetEggRequest $request, Egg $egg): array { return $this->fractal->item($egg) ->transformWith(EggTransformer::class) ->toArray(); } /** * Creates a new egg. */ public function store(StoreEggRequest $request): JsonResponse { $validated = $request->validated(); Log::info(json_encode($validated, JSON_PRETTY_PRINT)); $merged = array_merge($validated, [ 'uuid' => Uuid::uuid4()->toString(), // TODO: allow this to be set in the request, and default to config value if null or not present. 'author' => config('pterodactyl.service.author'), ]); Log::info(json_encode($merged, JSON_PRETTY_PRINT)); $egg = Egg::query()->create($merged); return $this->fractal->item($egg) ->transformWith(EggTransformer::class) ->respond(JsonResponse::HTTP_CREATED); } /** * Updates an egg. */ public function update(UpdateEggRequest $request, Egg $egg): array { $egg->update($request->validated()); return $this->fractal->item($egg) ->transformWith(EggTransformer::class) ->toArray(); } /** * Deletes an egg. * * @throws \Exception */ public function delete(DeleteEggRequest $request, Egg $egg): Response { $egg->delete(); return $this->returnNoContent(); } }