drogon/drogon_ctl/templates/restful_controller_custom_cc.csp
An Tao 70eda27427
Add the ability to create restful API controllers (#244)
* Add the ability to create restful API controllers

* Update the model.json template file

* Modify the 'create controller' command of the drogon_ctl

* access column values by column array indexes instead of column names when constructing an instance of a model class

* Fix a bug of mysql database

* Add some static SQL into models

* Add validations to models

* Add setToNull method to models

* Support 'where in' substatement

* Delay rendering from json to the response body. This allows users to modify the json object before sending a response.

* Add synchronous method to the HttpClient class
2019-09-30 21:34:30 +08:00

71 lines
1.9 KiB
Plaintext

/**
*
* [[fileName]].cc
* This file is generated by drogon_ctl
*
*/
#include "[[fileName]].h"
#include <string>
<%c++
auto tableInfo = @@.get<DrTemplateData>("tableInfo");
auto modelName = tableInfo.get<std::string>("className");
bool hasPrimaryKey = (tableInfo.get<int>("hasPrimaryKey")==1);
auto namespaceVector=@@.get<std::vector<std::string>>("namespaceVector");
std::string namespaceStr;
for(auto &name:namespaceVector)
{
namespaceStr.append(name);
namespaceStr.append("::");
}
if(!namespaceStr.empty())
{
namespaceStr.resize(namespaceStr.length()-2);
$$<<"using namespace "<<namespaceStr<<";\n";
}
std::string indentStr(@@.get<std::string>("className").length(), ' ');
%>
<%c++
if(hasPrimaryKey)
{%>
void [[className]]::getOne(const HttpRequestPtr &req,
{%indentStr%} std::function<void(const HttpResponsePtr &)> &&callback,
{%indentStr%} {%modelName%}::PrimaryKeyType &&id)
{
[[className]]Base::getOne(req, std::move(callback), std::move(id));
}
void [[className]]::updateOne(const HttpRequestPtr &req,
{%indentStr%} std::function<void(const HttpResponsePtr &)> &&callback,
{%indentStr%} {%modelName%}::PrimaryKeyType &&id)
{
[[className]]Base::updateOne(req, std::move(callback), std::move(id));
}
void [[className]]::deleteOne(const HttpRequestPtr &req,
{%indentStr%} std::function<void(const HttpResponsePtr &)> &&callback,
{%indentStr%} {%modelName%}::PrimaryKeyType &&id)
{
[[className]]Base::deleteOne(req, std::move(callback), std::move(id));
}
<%c++}%>
void [[className]]::get(const HttpRequestPtr &req,
{%indentStr%} std::function<void(const HttpResponsePtr &)> &&callback)
{
[[className]]Base::get(req, std::move(callback));
}
void [[className]]::create(const HttpRequestPtr &req,
{%indentStr%} std::function<void(const HttpResponsePtr &)> &&callback)
{
[[className]]Base::create(req, std::move(callback));
}