63 lines
1.9 KiB
C++
63 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <drogon/HttpController.h>
|
|
|
|
class ApiController : public drogon::HttpController<ApiController>
|
|
{
|
|
public:
|
|
METHOD_LIST_BEGIN
|
|
/*
|
|
* openapi:
|
|
* tags: Technical
|
|
* summary: Health check
|
|
* description: Returns process health without checking dependencies.
|
|
* auth: public
|
|
* body: none
|
|
* response: Service health status.
|
|
*/
|
|
ADD_METHOD_TO(ApiController::health, "/api/v1/health", drogon::Get);
|
|
/*
|
|
* openapi:
|
|
* tags: Technical
|
|
* summary: Readiness check
|
|
* description: Checks whether MySQL is reachable.
|
|
* auth: public
|
|
* body: none
|
|
* response: Dependency readiness status.
|
|
*/
|
|
ADD_METHOD_TO(ApiController::ready, "/api/v1/ready", drogon::Get);
|
|
/*
|
|
* openapi:
|
|
* tags: Technical
|
|
* summary: OpenAPI document
|
|
* description: Returns the generated OpenAPI JSON document.
|
|
* auth: public
|
|
* body: none
|
|
* response: OpenAPI 3 JSON document.
|
|
*/
|
|
ADD_METHOD_TO(ApiController::openApi, "/api/v1/openapi.json", drogon::Get);
|
|
/*
|
|
* openapi:
|
|
* tags: Technical
|
|
* summary: Swagger UI
|
|
* description: Serves a local Swagger UI page backed by openapi.json.
|
|
* auth: public
|
|
* body: none
|
|
* response: HTML documentation page.
|
|
*/
|
|
ADD_METHOD_TO(ApiController::docs, "/api/v1/docs", drogon::Get);
|
|
METHOD_LIST_END
|
|
|
|
void health(const drogon::HttpRequestPtr &req,
|
|
std::function<void(const drogon::HttpResponsePtr &)> &&callback);
|
|
|
|
void ready(const drogon::HttpRequestPtr &req,
|
|
std::function<void(const drogon::HttpResponsePtr &)> &&callback);
|
|
|
|
void openApi(const drogon::HttpRequestPtr &req,
|
|
std::function<void(const drogon::HttpResponsePtr &)> &&callback);
|
|
|
|
void docs(const drogon::HttpRequestPtr &req,
|
|
std::function<void(const drogon::HttpResponsePtr &)> &&callback);
|
|
};
|