63 lines
2.9 KiB
PHP
63 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace %NAMESPACE%\%API_NS%;
|
|
|
|
use Notes\Attribute\Ignore;
|
|
use Notes\Route\Attribute\Method\Route;
|
|
use Psr\Http\Message\{ ServerRequestInterface, ResponseInterface };
|
|
|
|
use %NAMESPACE%\{Lib, %USE_ENTITY_NS%, %USE_FORM_NS%, };
|
|
use function %NAMESPACE%\View\{_, lang, url, route, form};
|
|
|
|
#[\Notes\Route\Attribute\Object\Route(base:"%API_ROUTE_BASE%/%CLASSNAME_LC%")]
|
|
class %CLASSNAME% {
|
|
use Lib\ApiTrait;
|
|
|
|
#[Route(route: "/documentation", name: "api.%CLASSNAME_LC%:docs", method: "GET")]
|
|
public function index(ServerRequestInterface $request, array $attributes): ResponseInterface
|
|
{
|
|
return $this->renderMarkdown(getenv("PROJECT_PATH") . "/meta/docs/%CLASSNAME_LC%.md", [ %ENTITY_NS%\%CLASSNAME%::class, ], [ %FORM_NS%\%SAVE_FORM_CONTEXT_CLASSNAME%::class, %FORM_NS%\%DELETE_FORM_CONTEXT_CLASSNAME%::class ]);
|
|
}
|
|
|
|
#[Route("/", name: "api.%CLASSNAME_LC%:list", method: "GET")]
|
|
public function list(ServerRequestInterface $request, array $attributes) : ResponseInterface
|
|
{
|
|
$request = $this->searchEntitiesFromRequest($request, %ENTITY_NS%\%CLASSNAME%::class);
|
|
$result = $request->getAttribute("lean.searchRequest")[%ENTITY_NS%\%CLASSNAME%::class];
|
|
|
|
return $this->outputSearchResult($result);
|
|
}
|
|
|
|
#[Route("/", name: "api.%CLASSNAME_LC%:add", method: "POST")]
|
|
public function add(ServerRequestInterface $request, array $attributes) : ResponseInterface
|
|
{
|
|
$entity = new %ENTITY_NS%\%CLASSNAME%();
|
|
|
|
form($this->formFactory->%SAVE_FORM_CLASSNAME_LC%($entity), $this->formFactory->%SAVE_FORM_CONTEXT_CLASSNAME_LC%($request));
|
|
|
|
return $this->output($entity, (int) $entity->isLoaded());
|
|
}
|
|
|
|
#[Route("/{id:\d+}", name: "api.%CLASSNAME_LC%:single", method: "GET")]
|
|
#[Route("/{id:\d+}", name: "api.%CLASSNAME_LC%:edit", method: "PATCH")]
|
|
public function single(ServerRequestInterface $request, array $attributes) : ResponseInterface
|
|
{
|
|
$request = $this->searchEntityFromRequest($request, %ENTITY_NS%\%CLASSNAME%::class);
|
|
$result = $request->getAttribute("lean.searchRequest")[%ENTITY_NS%\%CLASSNAME%::class];
|
|
|
|
form($this->formFactory->%SAVE_FORM_CLASSNAME_LC%($result->getResult()), $this->formFactory->%SAVE_FORM_CONTEXT_CLASSNAME_LC%($request));
|
|
|
|
return $this->outputSearchResult($result);
|
|
}
|
|
|
|
#[Route("/{id:\d+}", name: "api.%CLASSNAME_LC%:delete", method: "DELETE")]
|
|
public function delete(ServerRequestInterface $request, array $attributes) : ResponseInterface
|
|
{
|
|
$request = $this->searchEntityFromRequest($request, %ENTITY_NS%\%CLASSNAME%::class);
|
|
$result = $request->getAttribute("lean.searchRequest")[%ENTITY_NS%\%CLASSNAME%::class];
|
|
|
|
form($this->formFactory->%DELETE_FORM_CLASSNAME_LC%($result->getResult()), $this->formFactory->%DELETE_FORM_CONTEXT_CLASSNAME_LC%($request));
|
|
|
|
return $this->outputSearchResult($result);
|
|
}
|
|
} |