diff --git a/openapi/templates/cpp-odb-json/config.yaml b/openapi/templates/cpp-odb-json/config.yaml new file mode 100644 index 0000000..4c46d81 --- /dev/null +++ b/openapi/templates/cpp-odb-json/config.yaml @@ -0,0 +1,9 @@ +modelPackage: models +apiPackage: api +packageName: cppbessot +hideGenerationTimestamp: true +generateModelTests: false +generateApiTests: false +generateApiDocumentation: false +generateModelDocumentation: false +variableNameFirstCharacterUppercase: false diff --git a/openapi/templates/cpp-odb-json/model-header.mustache b/openapi/templates/cpp-odb-json/model-header.mustache new file mode 100644 index 0000000..b1ff9f0 --- /dev/null +++ b/openapi/templates/cpp-odb-json/model-header.mustache @@ -0,0 +1,59 @@ +{{#models}} +{{#model}} +#pragma once + +#include +#include + +#include +#include + +namespace models { + +{{#isEnum}} +enum class {{classname}} +{ +{{#allowableValues}} +{{#enumVars}} + {{name}}{{^-last}},{{/-last}} +{{/enumVars}} +{{/allowableValues}} +}; +{{/isEnum}} +{{^isEnum}} +#pragma db model version({{#vendorExtensions.x-odbModelVersion}}{{.}}{{/vendorExtensions.x-odbModelVersion}}{{^vendorExtensions.x-odbModelVersion}}1, 1{{/vendorExtensions.x-odbModelVersion}}) +#pragma db object table("{{#vendorExtensions.x-odbTable}}{{.}}{{/vendorExtensions.x-odbTable}}{{^vendorExtensions.x-odbTable}}{{classname}}{{/vendorExtensions.x-odbTable}}") +class {{classname}} +{ +public: +{{#vars}} +{{#vendorExtensions.x-odbId}} + #pragma db id +{{/vendorExtensions.x-odbId}} +{{#description}} + // {{description}} +{{/description}} +{{#vendorExtensions.x-odbAddedIn}} + // odbAddedIn: {{.}} +{{/vendorExtensions.x-odbAddedIn}} + {{#isString}}std::string{{/isString}}{{^isString}}{{#isDateTime}}std::string{{/isDateTime}}{{^isDateTime}}{{dataType}}{{/isDateTime}}{{/isString}} {{nameInCamelCase}}{}; +{{/vars}} + + NLOHMANN_DEFINE_TYPE_INTRUSIVE({{classname}}{{#vars}}, {{nameInCamelCase}}{{/vars}}) + + nlohmann::json toJson() const + { + return nlohmann::json(*this); + } + + static {{classname}} fromJson(const nlohmann::json& j) + { + return j.get<{{classname}}>(); + } +}; +{{/isEnum}} + +} // namespace models + +{{/model}} +{{/models}} diff --git a/openapi/templates/cpp-odb-json/model-source.mustache b/openapi/templates/cpp-odb-json/model-source.mustache new file mode 100644 index 0000000..c5df73e --- /dev/null +++ b/openapi/templates/cpp-odb-json/model-source.mustache @@ -0,0 +1,10 @@ +{{#models}} +{{#model}} +#include "{{packageName}}/model/{{classname}}.h" + +namespace models { +// Nlohmann-based models are header-only for now. +} // namespace models + +{{/model}} +{{/models}}