675 lines
43 KiB
C++
675 lines
43 KiB
C++
|
//this file is generated by program(drogon_ctl) automatically,don't modify it!
|
||
|
#include "restful_controller_base_cc.h"
|
||
|
#include <drogon/utils/OStringStream.h>
|
||
|
#include <string>
|
||
|
#include <map>
|
||
|
#include <vector>
|
||
|
#include <set>
|
||
|
#include <iostream>
|
||
|
#include <unordered_map>
|
||
|
#include <unordered_set>
|
||
|
#include <algorithm>
|
||
|
#include <list>
|
||
|
#include <deque>
|
||
|
#include <queue>
|
||
|
#include "create_model.h"
|
||
|
using namespace drogon_ctl;
|
||
|
|
||
|
using namespace drogon;
|
||
|
std::string restful_controller_base_cc::genText(const DrTemplateData& restful_controller_base_cc_view_data)
|
||
|
{
|
||
|
drogon::OStringStream restful_controller_base_cc_tmp_stream;
|
||
|
std::string layoutName{""};
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "/**\n";
|
||
|
restful_controller_base_cc_tmp_stream << " *\n";
|
||
|
restful_controller_base_cc_tmp_stream << " * ";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["fileName"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base.cc\n";
|
||
|
restful_controller_base_cc_tmp_stream << " * DO NOT EDIT. This file is generated by drogon_ctl automatically.\n";
|
||
|
restful_controller_base_cc_tmp_stream << " * Users should implement business logic in the derived class.\n";
|
||
|
restful_controller_base_cc_tmp_stream << " */\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "#include \"";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["fileName"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base.h\"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "#include <string>\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
auto tableInfo = restful_controller_base_cc_view_data.get<DrTemplateData>("tableInfo");
|
||
|
auto modelName = tableInfo.get<std::string>("className");
|
||
|
bool hasPrimaryKey = (tableInfo.get<int>("hasPrimaryKey")==1);
|
||
|
auto namespaceVector=restful_controller_base_cc_view_data.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);
|
||
|
restful_controller_base_cc_tmp_stream<<"using namespace "<<namespaceStr<<";\n";
|
||
|
}
|
||
|
std::string indentStr(restful_controller_base_cc_view_data.get<std::string>("className").length(), ' ');
|
||
|
if(hasPrimaryKey)
|
||
|
{
|
||
|
restful_controller_base_cc_tmp_stream << "void ";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base::getOne(const HttpRequestPtr &req,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " std::function<void(const HttpResponsePtr &)> &&callback,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "::PrimaryKeyType &&id)\n";
|
||
|
restful_controller_base_cc_tmp_stream << "{\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto dbClientPtr = getDbClient();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto callbackPtr =\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::make_shared<std::function<void(const HttpResponsePtr &)>>(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::move(callback));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " drogon::orm::Mapper<";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "> mapper(dbClientPtr);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.findByPrimaryKey(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " id,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [req, callbackPtr, this](";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << " r) {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(HttpResponse::newHttpJsonResponse(makeJson(req, r)));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " },\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const DrogonDbException &e) {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " const drogon::orm::UnexpectedRows *s=dynamic_cast<const drogon::orm::UnexpectedRows *>(&e.base());\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(s)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpResponse();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k404NotFound);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR<<e.base().what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " });\n";
|
||
|
restful_controller_base_cc_tmp_stream << "}\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "void ";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base::updateOne(const HttpRequestPtr &req,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " std::function<void(const HttpResponsePtr &)> &&callback,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "::PrimaryKeyType &&id)\n";
|
||
|
restful_controller_base_cc_tmp_stream << "{\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto jsonPtr=req->jsonObject();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!jsonPtr)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"]=\"No json object is found in the request\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << " object;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::string err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!doCustomValidations(*jsonPtr, err))\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " try\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(isMasquerading())\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "::validateMasqueradedJsonForUpdate(*jsonPtr, masqueradingVector(), err))\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " object.updateByMasqueradedJson(*jsonPtr, masqueradingVector());\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "::validateJsonForUpdate(*jsonPtr, err))\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " object.updateByJson(*jsonPtr);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " catch(const Json::Exception &e)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"]=\"Field type error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return; \n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(object.getPrimaryKey() != id)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"]=\"Bad primary key\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto dbClientPtr = getDbClient();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto callbackPtr =\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::make_shared<std::function<void(const HttpResponsePtr &)>>(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::move(callback));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " drogon::orm::Mapper<";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "> mapper(dbClientPtr);\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.update(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " object,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const size_t count) \n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(count == 1)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpResponse();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k202Accepted);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else if(count == 0)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"]=\"No resources are updated\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k404NotFound);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_FATAL << \"More than one resource is updated: \" << count;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " },\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const DrogonDbException &e) {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.base().what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " });\n";
|
||
|
restful_controller_base_cc_tmp_stream << "}\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "void ";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base::deleteOne(const HttpRequestPtr &req,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " std::function<void(const HttpResponsePtr &)> &&callback,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "::PrimaryKeyType &&id)\n";
|
||
|
restful_controller_base_cc_tmp_stream << "{\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto dbClientPtr = getDbClient();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto callbackPtr =\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::make_shared<std::function<void(const HttpResponsePtr &)>>(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::move(callback));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " drogon::orm::Mapper<";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "> mapper(dbClientPtr);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.deleteByPrimaryKey(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " id,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const size_t count) {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(count == 1)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpResponse();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k204NoContent);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else if(count == 0)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"No resources deleted\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k404NotFound);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_FATAL << \"Delete more than one records: \" << count;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"Database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " },\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const DrogonDbException &e) {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.base().what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " });\n";
|
||
|
restful_controller_base_cc_tmp_stream << "}\n";
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "void ";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base::get(const HttpRequestPtr &req,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " std::function<void(const HttpResponsePtr &)> &&callback)\n";
|
||
|
restful_controller_base_cc_tmp_stream << "{\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto dbClientPtr = getDbClient();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " drogon::orm::Mapper<";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "> mapper(dbClientPtr);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto ¶meters = req->parameters();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto iter = parameters.find(\"sort\");\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(iter != parameters.end())\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto sortFields = drogon::utils::splitString(iter->second, \",\");\n";
|
||
|
restful_controller_base_cc_tmp_stream << " for(auto &field : sortFields)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(field.empty())\n";
|
||
|
restful_controller_base_cc_tmp_stream << " continue;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(field[0] == '+')\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " field = field.substr(1);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.orderBy(field, SortOrder::ASC);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else if(field[0] == '-')\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " field = field.substr(1);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.orderBy(field, SortOrder::DESC);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.orderBy(field, SortOrder::ASC);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " iter = parameters.find(\"offset\");\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(iter != parameters.end())\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " try{\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto offset = std::stoll(iter->second);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.offset(offset);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " catch(...)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpResponse();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " iter = parameters.find(\"limit\");\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(iter != parameters.end())\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " try{\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto limit = std::stoll(iter->second);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.limit(limit);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " catch(...)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpResponse();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " } \n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto callbackPtr =\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::make_shared<std::function<void(const HttpResponsePtr &)>>(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::move(callback));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto jsonPtr = req->jsonObject();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(jsonPtr && jsonPtr->isMember(\"filter\"))\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " try{\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto criteria = makeCriteria((*jsonPtr)[\"filter\"]);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.findBy(criteria,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [req, callbackPtr, this](const std::vector<";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "> &v) {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret.resize(0);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " for (auto &obj : v)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret.append(makeJson(req, obj));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(HttpResponse::newHttpJsonResponse(ret));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " },\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const DrogonDbException &e) { \n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.base().what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp); \n";
|
||
|
restful_controller_base_cc_tmp_stream << " });\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " catch(const std::exception &e)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = e.what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return; \n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.findAll([req, callbackPtr, this](const std::vector<";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "> &v) {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret.resize(0);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " for (auto &obj : v)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret.append(makeJson(req, obj));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(HttpResponse::newHttpJsonResponse(ret));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " },\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const DrogonDbException &e) { \n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.base().what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp); \n";
|
||
|
restful_controller_base_cc_tmp_stream << " });\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << "}\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "void ";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base::create(const HttpRequestPtr &req,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " std::function<void(const HttpResponsePtr &)> &&callback)\n";
|
||
|
restful_controller_base_cc_tmp_stream << "{\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto jsonPtr=req->jsonObject();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!jsonPtr)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"]=\"No json object is found in the request\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::string err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!doCustomValidations(*jsonPtr, err))\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(isMasquerading())\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "::validateMasqueradedJsonForCreation(*jsonPtr, masqueradingVector(), err))\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " else\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " if(!";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "::validateJsonForCreation(*jsonPtr, err))\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = err;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " } \n";
|
||
|
restful_controller_base_cc_tmp_stream << " try \n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << " object = \n";
|
||
|
restful_controller_base_cc_tmp_stream << " (isMasquerading()? \n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "(*jsonPtr, masqueradingVector()) : \n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "(*jsonPtr));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto dbClientPtr = getDbClient();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto callbackPtr =\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::make_shared<std::function<void(const HttpResponsePtr &)>>(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " std::move(callback));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " drogon::orm::Mapper<";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << "> mapper(dbClientPtr);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " mapper.insert(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " object,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [req, callbackPtr, this](";
|
||
|
restful_controller_base_cc_tmp_stream<<modelName;
|
||
|
restful_controller_base_cc_tmp_stream << " newObject){\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(HttpResponse::newHttpJsonResponse(\n";
|
||
|
restful_controller_base_cc_tmp_stream << " makeJson(req, newObject)));\n";
|
||
|
restful_controller_base_cc_tmp_stream << " },\n";
|
||
|
restful_controller_base_cc_tmp_stream << " [callbackPtr](const DrogonDbException &e){\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.base().what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"] = \"database error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp = HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k500InternalServerError);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " (*callbackPtr)(resp); \n";
|
||
|
restful_controller_base_cc_tmp_stream << " });\n";
|
||
|
restful_controller_base_cc_tmp_stream << " }\n";
|
||
|
restful_controller_base_cc_tmp_stream << " catch(const Json::Exception &e)\n";
|
||
|
restful_controller_base_cc_tmp_stream << " {\n";
|
||
|
restful_controller_base_cc_tmp_stream << " LOG_ERROR << e.what();\n";
|
||
|
restful_controller_base_cc_tmp_stream << " Json::Value ret;\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ret[\"error\"]=\"Field type error\";\n";
|
||
|
restful_controller_base_cc_tmp_stream << " auto resp= HttpResponse::newHttpJsonResponse(ret);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " resp->setStatusCode(k400BadRequest);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " callback(resp);\n";
|
||
|
restful_controller_base_cc_tmp_stream << " return; \n";
|
||
|
restful_controller_base_cc_tmp_stream << " } \n";
|
||
|
restful_controller_base_cc_tmp_stream << "}\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "/*\n";
|
||
|
restful_controller_base_cc_tmp_stream << "void ";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base::update(const HttpRequestPtr &req,\n";
|
||
|
restful_controller_base_cc_tmp_stream << " ";
|
||
|
restful_controller_base_cc_tmp_stream<<indentStr;
|
||
|
restful_controller_base_cc_tmp_stream << " std::function<void(const HttpResponsePtr &)> &&callback)\n";
|
||
|
restful_controller_base_cc_tmp_stream << "{\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
restful_controller_base_cc_tmp_stream << "}*/\n";
|
||
|
restful_controller_base_cc_tmp_stream<<"\n";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base::";
|
||
|
{
|
||
|
auto & val=restful_controller_base_cc_view_data["className"];
|
||
|
if(val.type()==typeid(const char *)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const char *>(&val);
|
||
|
}else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
|
||
|
restful_controller_base_cc_tmp_stream<<*any_cast<const std::string>(&val);
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << "Base()\n";
|
||
|
restful_controller_base_cc_tmp_stream << " : RestfulController({\n";
|
||
|
|
||
|
tableInfo = restful_controller_base_cc_view_data.get<DrTemplateData>("tableInfo");
|
||
|
const auto &cols=tableInfo.get<std::vector<ColumnInfo>>("columns");
|
||
|
for(size_t i=0; i<cols.size(); ++i)
|
||
|
{
|
||
|
auto &col = cols[i];
|
||
|
if(i < (cols.size()-1))
|
||
|
{
|
||
|
restful_controller_base_cc_tmp_stream << " \"";
|
||
|
restful_controller_base_cc_tmp_stream<<col.colName_;
|
||
|
restful_controller_base_cc_tmp_stream << "\",\n";
|
||
|
}else{
|
||
|
restful_controller_base_cc_tmp_stream << " \"";
|
||
|
restful_controller_base_cc_tmp_stream<<col.colName_;
|
||
|
restful_controller_base_cc_tmp_stream << "\"\n";
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << " })\n";
|
||
|
restful_controller_base_cc_tmp_stream << "{\n";
|
||
|
restful_controller_base_cc_tmp_stream << " /**\n";
|
||
|
restful_controller_base_cc_tmp_stream << " * The items in the vector are aliases of column names in the table.\n";
|
||
|
restful_controller_base_cc_tmp_stream << " * if one item is set to an empty string, the related column is not sent\n";
|
||
|
restful_controller_base_cc_tmp_stream << " * to clients.\n";
|
||
|
restful_controller_base_cc_tmp_stream << " */\n";
|
||
|
restful_controller_base_cc_tmp_stream << " enableMasquerading({\n";
|
||
|
|
||
|
for(size_t i=0; i<cols.size(); ++i)
|
||
|
{
|
||
|
auto &col = cols[i];
|
||
|
if(i < (cols.size()-1))
|
||
|
{
|
||
|
restful_controller_base_cc_tmp_stream << " \"";
|
||
|
restful_controller_base_cc_tmp_stream<<col.colName_;
|
||
|
restful_controller_base_cc_tmp_stream << "\", // the alias for the ";
|
||
|
restful_controller_base_cc_tmp_stream<<col.colName_;
|
||
|
restful_controller_base_cc_tmp_stream << " column.\n";
|
||
|
}else{
|
||
|
restful_controller_base_cc_tmp_stream << " \"";
|
||
|
restful_controller_base_cc_tmp_stream<<col.colName_;
|
||
|
restful_controller_base_cc_tmp_stream << "\" // the alias for the ";
|
||
|
restful_controller_base_cc_tmp_stream<<col.colName_;
|
||
|
restful_controller_base_cc_tmp_stream << " column.\n";
|
||
|
}
|
||
|
}
|
||
|
restful_controller_base_cc_tmp_stream << " });\n";
|
||
|
restful_controller_base_cc_tmp_stream << "}\n";
|
||
|
if(layoutName.empty())
|
||
|
{
|
||
|
std::string ret{std::move(restful_controller_base_cc_tmp_stream.str())};
|
||
|
return ret;
|
||
|
}else
|
||
|
{
|
||
|
auto templ = DrTemplateBase::newTemplate(layoutName);
|
||
|
if(!templ) return "";
|
||
|
HttpViewData data = restful_controller_base_cc_view_data;
|
||
|
auto str = std::move(restful_controller_base_cc_tmp_stream.str());
|
||
|
if(!str.empty() && str[str.length()-1] == '\n') str.resize(str.length()-1);
|
||
|
data[""] = std::move(str);
|
||
|
return templ->genText(data);
|
||
|
}
|
||
|
}
|