//this file is generated by program(drogon_ctl) automatically,don't modify it! #include "model_cc.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "create_model.h" using namespace drogon_ctl; using namespace drogon; std::string model_cc::genText(const DrTemplateData& model_cc_view_data) { drogon::OStringStream model_cc_tmp_stream; std::string layoutName{""}; model_cc_tmp_stream << "/**\n"; model_cc_tmp_stream << " *\n"; model_cc_tmp_stream << " * "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << ".cc\n"; model_cc_tmp_stream << " * DO NOT EDIT. This file is generated by drogon_ctl\n"; model_cc_tmp_stream << " *\n"; model_cc_tmp_stream << " */\n"; model_cc_tmp_stream<<"\n"; model_cc_tmp_stream << "#include \""; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << ".h\"\n"; std::vector relationshipClassNames; auto &relationships=model_cc_view_data.get>("relationships"); auto rdbms=model_cc_view_data.get("rdbms"); for(auto &relationship : relationships) { if(relationship.type() == Relationship::Type::HasOne || relationship.type() == Relationship::Type::HasMany || relationship.type() == Relationship::Type::ManyToMany) { auto &name=relationship.targetTableName(); auto relationshipClassName=nameTransform(name, true); auto originalClassName=nameTransform(relationship.originalTableName(),true); if(relationshipClassName!=originalClassName) { relationshipClassNames.push_back(relationshipClassName); } } if(relationship.type() == Relationship::Type::ManyToMany) { auto &pivotTableName=relationship.pivotTable().tableName(); auto pivotTableClassName=nameTransform(pivotTableName, true); relationshipClassNames.push_back(pivotTableClassName); } } std::sort(relationshipClassNames.begin(), relationshipClassNames.end()); relationshipClassNames.erase(std::unique(relationshipClassNames.begin(), relationshipClassNames.end()), relationshipClassNames.end()); for(std::string &relationshipClassName : relationshipClassNames) { model_cc_tmp_stream << "#include \""; model_cc_tmp_stream<\n"; auto &convertMethods=model_cc_view_data.get>("convertMethods"); for(auto convertMethod : convertMethods ) { for(auto i : convertMethod.includeFiles()) { model_cc_tmp_stream<<"#include "<\n"; const auto &cols=model_cc_view_data.get>("columns"); auto className=model_cc_view_data.get("className"); std::string indentStr(model_cc_view_data.get("className").length(), ' '); model_cc_tmp_stream<<"\n"; model_cc_tmp_stream << "using namespace drogon;\n"; model_cc_tmp_stream << "using namespace drogon::orm;\n"; model_cc_tmp_stream << "using namespace drogon_model::"; { auto & val=model_cc_view_data["dbName"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } auto &schema=model_cc_view_data.get("schema"); if(!schema.empty()) { model_cc_tmp_stream<<"::"<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::Cols::_"; model_cc_tmp_stream<("hasPrimaryKey")<=1){ model_cc_tmp_stream << "const std::string "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::primaryKeyName = \""; { auto & val=model_cc_view_data["primaryKeyName"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "\";\n"; }else{ model_cc_tmp_stream << "const std::vector "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::primaryKeyName = {"; auto pkName=model_cc_view_data.get>("primaryKeyName"); for(size_t i=0;i("hasPrimaryKey")>0){ model_cc_tmp_stream << "const bool "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::hasPrimaryKey = true;\n"; }else{ model_cc_tmp_stream << "const bool "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::hasPrimaryKey = false;\n"; } model_cc_tmp_stream << "const std::string "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::tableName = \""; if(!schema.empty()) { model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "\";\n"; model_cc_tmp_stream<<"\n"; model_cc_tmp_stream << "const std::vector(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::MetaData> "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::metaData_={\n"; for(size_t i=0;i(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::getColumnName(size_t index) noexcept(false)\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " assert(index < metaData_.size());\n"; model_cc_tmp_stream << " return metaData_[index].colName_;\n"; model_cc_tmp_stream << "}\n"; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::"; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "(const Row &r, const ssize_t indexOffset) noexcept\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " if(indexOffset < 0)\n"; model_cc_tmp_stream << " {\n"; for(size_t i = 0; i ();\n"; model_cc_tmp_stream<<" struct tm stm;\n"; model_cc_tmp_stream<<" memset(&stm,0,sizeof(stm));\n"; model_cc_tmp_stream<<" strptime(daysStr.c_str(),\"%Y-%m-%d\",&stm);\n"; model_cc_tmp_stream<<" time_t t = mktime(&stm);\n"; // model_cc_tmp_stream<<" "<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "" ) { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos) { model_cc_tmp_stream<<" auto timeStr = r[\""<();\n"; model_cc_tmp_stream<<" struct tm stm;\n"; model_cc_tmp_stream<<" memset(&stm,0,sizeof(stm));\n"; model_cc_tmp_stream<<" auto p = strptime(timeStr.c_str(),\"%Y-%m-%d %H:%M:%S\",&stm);\n"; model_cc_tmp_stream<<" time_t t = mktime(&stm);\n"; model_cc_tmp_stream<<" size_t decimalNum = 0;\n"; model_cc_tmp_stream<<" if(p)\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" if(*p=='.')\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" std::string decimals(p+1,&timeStr[timeStr.length()]);\n"; model_cc_tmp_stream<<" while(decimals.length()<6)\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" decimals += \"0\";\n"; model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" decimalNum = (size_t)atol(decimals.c_str());\n"; model_cc_tmp_stream<<" }\n"; // model_cc_tmp_stream<<" "<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000+decimalNum);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="bytea") { model_cc_tmp_stream<<" auto str = r[\""<();\n"; model_cc_tmp_stream<<" if(str.length()>=2&&\n"; model_cc_tmp_stream<<" str[0]=='\\\\'&&str[1]=='x')\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" "<>(drogon::utils::hexToBinaryVector(str.data()+2,str.length()-2));\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } model_cc_tmp_stream << " "; model_cc_tmp_stream<(r[\""; model_cc_tmp_stream<());\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream << " }\n"; } model_cc_tmp_stream << " }\n"; model_cc_tmp_stream << " else\n"; model_cc_tmp_stream << " {\n"; model_cc_tmp_stream << " size_t offset = (size_t)indexOffset;\n"; model_cc_tmp_stream << " if(offset + "; model_cc_tmp_stream< r.size())\n"; model_cc_tmp_stream << " {\n"; model_cc_tmp_stream << " LOG_FATAL << \"Invalid SQL result for this model\";\n"; model_cc_tmp_stream << " return;\n"; model_cc_tmp_stream << " }\n"; model_cc_tmp_stream << " size_t index;\n"; for(size_t i = 0; i ();\n"; model_cc_tmp_stream<<" struct tm stm;\n"; model_cc_tmp_stream<<" memset(&stm,0,sizeof(stm));\n"; model_cc_tmp_stream<<" strptime(daysStr.c_str(),\"%Y-%m-%d\",&stm);\n"; model_cc_tmp_stream<<" time_t t = mktime(&stm);\n"; // model_cc_tmp_stream<<" "<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos) { model_cc_tmp_stream<<" auto timeStr = r[index].as();\n"; model_cc_tmp_stream<<" struct tm stm;\n"; model_cc_tmp_stream<<" memset(&stm,0,sizeof(stm));\n"; model_cc_tmp_stream<<" auto p = strptime(timeStr.c_str(),\"%Y-%m-%d %H:%M:%S\",&stm);\n"; model_cc_tmp_stream<<" time_t t = mktime(&stm);\n"; model_cc_tmp_stream<<" size_t decimalNum = 0;\n"; model_cc_tmp_stream<<" if(p)\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" if(*p=='.')\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" std::string decimals(p+1,&timeStr[timeStr.length()]);\n"; model_cc_tmp_stream<<" while(decimals.length()<6)\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" decimals += \"0\";\n"; model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" decimalNum = (size_t)atol(decimals.c_str());\n"; model_cc_tmp_stream<<" }\n"; // model_cc_tmp_stream<<" "<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000+decimalNum);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="bytea") { model_cc_tmp_stream<<" auto str = r[index].as();\n"; model_cc_tmp_stream<<" if(str.length()>=2&&\n"; model_cc_tmp_stream<<" str[0]=='\\\\'&&str[1]=='x')\n"; model_cc_tmp_stream<<" {\n"; model_cc_tmp_stream<<" "<>(drogon::utils::hexToBinaryVector(str.data()+2,str.length()-2));\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } model_cc_tmp_stream << " "; model_cc_tmp_stream<(r[index].as<"; model_cc_tmp_stream<());\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodAfterDbRead() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodAfterDbRead() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream << " }\n"; } model_cc_tmp_stream << " }\n"; model_cc_tmp_stream<<"\n"; model_cc_tmp_stream << "}\n"; model_cc_tmp_stream<<"\n"; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::"; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "(const Json::Value &pJson, const std::vector &pMasqueradingVector) noexcept(false)\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " if(pMasqueradingVector.size() != "; model_cc_tmp_stream<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="date") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos) { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000+decimalNum);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="bytea" || col.colDatabaseType_.find("blob") != std::string::npos) { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<>(drogon::utils::base64DecodeToVector(str));\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("uint") == 0 || col.colType_ == "unsigned short") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("int") == 0 || col.colType_ == "short") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "float") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "double") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "bool") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } model_cc_tmp_stream << " }\n"; } model_cc_tmp_stream << "}\n"; model_cc_tmp_stream<<"\n"; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::"; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "(const Json::Value &pJson) noexcept(false)\n"; model_cc_tmp_stream << "{\n"; for(size_t i=0;i(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="date") { model_cc_tmp_stream<<" if(!pJson[\""<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos) { model_cc_tmp_stream<<" if(!pJson[\""<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000+decimalNum);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="bytea" || col.colDatabaseType_.find("blob") != std::string::npos) { model_cc_tmp_stream<<" if(!pJson[\""<>(drogon::utils::base64DecodeToVector(str));\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("uint") == 0 || col.colType_ == "unsigned short") { model_cc_tmp_stream<<" if(!pJson[\""<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("int") == 0 || col.colType_ == "short") { model_cc_tmp_stream<<" if(!pJson[\""<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "float") { model_cc_tmp_stream<<" if(!pJson[\""<(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "double") { model_cc_tmp_stream<<" if(!pJson[\""<(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "bool") { model_cc_tmp_stream<<" if(!pJson[\""<(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } model_cc_tmp_stream << " }\n"; } model_cc_tmp_stream << "}\n"; model_cc_tmp_stream<<"\n"; model_cc_tmp_stream << "void "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::updateByMasqueradedJson(const Json::Value &pJson,\n"; model_cc_tmp_stream << " const std::vector &pMasqueradingVector) noexcept(false)\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " if(pMasqueradingVector.size() != "; model_cc_tmp_stream<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="date") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos) { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000+decimalNum);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="bytea" || col.colDatabaseType_.find("blob") != std::string::npos) { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<>(drogon::utils::base64DecodeToVector(str));\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("uint") == 0 || col.colType_ == "unsigned short") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("int") == 0 || col.colType_ == "short") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "float") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "double") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "bool") { model_cc_tmp_stream<<" if(!pJson[pMasqueradingVector["<(pJson[pMasqueradingVector["<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } model_cc_tmp_stream << " }\n"; } model_cc_tmp_stream << "}\n"; model_cc_tmp_stream<<"\n"; model_cc_tmp_stream << "void "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::updateByJson(const Json::Value &pJson) noexcept(false)\n"; model_cc_tmp_stream << "{\n"; for(size_t i=0;i(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="date") { model_cc_tmp_stream<<" if(!pJson[\""<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos) { model_cc_tmp_stream<<" if(!pJson[\""<(::trantor::Date(946656000000000).after(daysNum*86400));\n"; model_cc_tmp_stream<<" "<(t*1000000+decimalNum);\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colDatabaseType_=="bytea" || col.colDatabaseType_.find("blob") != std::string::npos) { model_cc_tmp_stream<<" if(!pJson[\""<>(drogon::utils::base64DecodeToVector(str));\n"; auto convertMethod=std::find_if(convertMethods.begin(),convertMethods.end(),[col](const ConvertMethod& c){ return c.shouldConvert("*", col.colName_); }); if (convertMethod != convertMethods.end() && convertMethod->methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("uint") == 0 || col.colType_ == "unsigned short") { model_cc_tmp_stream<<" if(!pJson[\""<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_.find("int") == 0 || col.colType_ == "short") { model_cc_tmp_stream<<" if(!pJson[\""<(("<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "float") { model_cc_tmp_stream<<" if(!pJson[\""<(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "double") { model_cc_tmp_stream<<" if(!pJson[\""<(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } else if(col.colType_ == "bool") { model_cc_tmp_stream<<" if(!pJson[\""<(pJson[\""<methodBeforeDbWrite() != "") { model_cc_tmp_stream<<" "<< convertMethod->methodBeforeDbWrite() << "(" << col.colValName_ << "_);\n"; } //endif model_cc_tmp_stream<<" }\n"; model_cc_tmp_stream<<" }\n"; continue; } model_cc_tmp_stream << " }\n"; } model_cc_tmp_stream << "}\n"; model_cc_tmp_stream<<"\n"; for(size_t i=0;i") { model_cc_tmp_stream<<"std::string "<data(),"<size());\n"; model_cc_tmp_stream<<" return defaultValue;\n"; model_cc_tmp_stream<<"}\n"; } model_cc_tmp_stream<<"const std::shared_ptr<"< &"<(p"<(p"<(std::move(p"<") { model_cc_tmp_stream<<"void "<>(p"<("hasPrimaryKey")==1) { model_cc_tmp_stream<<"const typename "<("rdbms")=="postgresql"||model_cc_view_data.get("hasPrimaryKey")!=1) { model_cc_tmp_stream<<"void "<("rdbms")=="mysql"||model_cc_view_data.get("rdbms")=="sqlite3") { auto primaryKeyTypeString=model_cc_view_data.get("primaryKeyType"); model_cc_tmp_stream<<"void "<(static_cast<"<(id));\n"; } else { model_cc_tmp_stream<<" "<(id);\n"; } break; } } model_cc_tmp_stream<<"}\n"; } if(model_cc_view_data.get("hasPrimaryKey")>1) { model_cc_tmp_stream<<"typename "<>("primaryKeyValNames"); for(auto pkName:pkNames) { ++count; model_cc_tmp_stream<<"*"<("hasPrimaryKey")) model_cc_tmp_stream<<","; } model_cc_tmp_stream<<");\n"; model_cc_tmp_stream<<"}\n"; } model_cc_tmp_stream<<"\n"; model_cc_tmp_stream << "const std::vector &"; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::insertColumns() noexcept\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " static const std::vector inCols={\n"; for(size_t i=0;i(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::outputArgs(drogon::orm::internal::SqlBinder &binder) const\n"; model_cc_tmp_stream << "{\n"; for(size_t i = 0; i < cols.size(); ++i){ auto &col = cols[i]; if(!col.isAutoVal_&&!col.colType_.empty()) { model_cc_tmp_stream << " if(dirtyFlag_["; model_cc_tmp_stream< "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::updateColumns() const\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " std::vector ret;\n"; for(size_t i=0;i(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::updateArgs(drogon::orm::internal::SqlBinder &binder) const\n"; model_cc_tmp_stream << "{\n"; for(size_t i=0;i(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::toJson() const\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " Json::Value ret;\n"; for(auto col:cols){ model_cc_tmp_stream << " if(get"; model_cc_tmp_stream<toDbStringLocal();\n"; }else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos){ model_cc_tmp_stream << " ret[\""; model_cc_tmp_stream<toDbStringLocal();\n"; }else if(col.colDatabaseType_=="bytea"||col.colDatabaseType_.find("blob")!=std::string::npos){ model_cc_tmp_stream << " ret[\""; model_cc_tmp_stream<data(),get"; model_cc_tmp_stream<size());\n"; }else if(col.colType_=="int64_t"){ model_cc_tmp_stream << " ret[\""; model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::toMasqueradedJson(\n"; model_cc_tmp_stream << " const std::vector &pMasqueradingVector) const\n"; model_cc_tmp_stream << "{\n"; model_cc_tmp_stream << " Json::Value ret;\n"; model_cc_tmp_stream << " if(pMasqueradingVector.size() == "; model_cc_tmp_stream<toDbStringLocal();\n"; }else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos){ model_cc_tmp_stream << " ret[pMasqueradingVector["; model_cc_tmp_stream<toDbStringLocal();\n"; }else if(col.colDatabaseType_=="bytea"||col.colDatabaseType_.find("blob")!=std::string::npos){ model_cc_tmp_stream << " ret[pMasqueradingVector["; model_cc_tmp_stream<data(),get"; model_cc_tmp_stream<size());\n"; }else if(col.colType_=="int64_t"){ model_cc_tmp_stream << " ret[pMasqueradingVector["; model_cc_tmp_stream<toDbStringLocal();\n"; }else if(col.colDatabaseType_.find("timestamp")!=std::string::npos||col.colDatabaseType_.find("datetime")!=std::string::npos){ model_cc_tmp_stream << " ret[\""; model_cc_tmp_stream<toDbStringLocal();\n"; }else if(col.colDatabaseType_=="bytea"||col.colDatabaseType_.find("blob")!=std::string::npos){ model_cc_tmp_stream << " ret[\""; model_cc_tmp_stream<data(),get"; model_cc_tmp_stream<size());\n"; }else if(col.colType_=="int64_t"){ model_cc_tmp_stream << " ret[\""; model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::validateJsonForCreation(const Json::Value &pJson, std::string &err)\n"; model_cc_tmp_stream << "{\n"; for(size_t i=0;i(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::validateMasqueradedJsonForCreation(const Json::Value &pJson,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream< &pMasqueradingVector,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::validateJsonForUpdate(const Json::Value &pJson, std::string &err)\n"; model_cc_tmp_stream << "{\n"; for(size_t i=0;i(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::validateMasqueradedJsonForUpdate(const Json::Value &pJson,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream< &pMasqueradingVector,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::validJsonOfField(size_t index,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<0) { model_cc_tmp_stream << " // asString().length() creates a string object, is there any better way to validate the length?\n"; model_cc_tmp_stream << " if(pJson.isString() && pJson.asString().length() > "; model_cc_tmp_stream<= 'a') { alias[0] += ('A' - 'a'); } std::string alind(alias.length(), ' '); model_cc_tmp_stream << "void "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::get"; model_cc_tmp_stream< &rcb,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::get"; model_cc_tmp_stream< &rcb,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<> [rcb = std::move(rcb), ecb](const Result &r){\n"; model_cc_tmp_stream << " if (r.size() == 0)\n"; model_cc_tmp_stream << " {\n"; model_cc_tmp_stream << " ecb(UnexpectedRows(\"0 rows found\"));\n"; model_cc_tmp_stream << " }\n"; model_cc_tmp_stream << " else if (r.size() > 1)\n"; model_cc_tmp_stream << " {\n"; model_cc_tmp_stream << " ecb(UnexpectedRows(\"Found more than one row\"));\n"; model_cc_tmp_stream << " }\n"; model_cc_tmp_stream << " else\n"; model_cc_tmp_stream << " {\n"; model_cc_tmp_stream << " rcb("; model_cc_tmp_stream<> ecb;\n"; model_cc_tmp_stream << "}\n"; } else if(relationship.type() == Relationship::Type::HasMany) { if(!alias.empty()) { if(alias[0] <= 'z' && alias[0] >= 'a') { alias[0] += ('A' - 'a'); } std::string alind(alias.length(), ' '); model_cc_tmp_stream << "void "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::get"; model_cc_tmp_stream<)> &rcb,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::get"; model_cc_tmp_stream<)> &rcb,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<> [rcb = std::move(rcb)](const Result &r){\n"; model_cc_tmp_stream << " std::vector<"; model_cc_tmp_stream< ret;\n"; model_cc_tmp_stream << " ret.reserve(r.size());\n"; model_cc_tmp_stream << " for (auto const &row : r)\n"; model_cc_tmp_stream << " {\n"; model_cc_tmp_stream << " ret.emplace_back("; model_cc_tmp_stream<> ecb;\n"; model_cc_tmp_stream << "}\n"; } else if(relationship.type() == Relationship::Type::ManyToMany) { auto &pivotTableName=relationship.pivotTable().tableName(); auto pivotTableClassName=nameTransform(pivotTableName, true); auto &pivotOriginalKey=relationship.pivotTable().originalKey(); auto &pivotTargetKey=relationship.pivotTable().targetKey(); if(!alias.empty()) { if(alias[0] <= 'z' && alias[0] >= 'a') { alias[0] += ('A' - 'a'); } std::string alind(alias.length(), ' '); model_cc_tmp_stream << "void "; { auto & val=model_cc_view_data["className"]; if(val.type()==typeid(const char *)){ model_cc_tmp_stream<<*any_cast(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::get"; model_cc_tmp_stream<>)> &rcb,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<(&val); }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){ model_cc_tmp_stream<<*any_cast(&val); } } model_cc_tmp_stream << "::get"; model_cc_tmp_stream<>)> &rcb,\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<> [rcb = std::move(rcb)](const Result &r){\n"; model_cc_tmp_stream << " std::vector> ret;\n"; model_cc_tmp_stream << " ret.reserve(r.size());\n"; model_cc_tmp_stream << " for (auto const &row : r)\n"; model_cc_tmp_stream << " {\n"; model_cc_tmp_stream << " ret.emplace_back(std::pair<"; model_cc_tmp_stream<(\n"; model_cc_tmp_stream << " "; model_cc_tmp_stream<> ecb;\n"; model_cc_tmp_stream << "}\n"; } } if(layoutName.empty()) { std::string ret{std::move(model_cc_tmp_stream.str())}; return ret; }else { auto templ = DrTemplateBase::newTemplate(layoutName); if(!templ) return ""; HttpViewData data = model_cc_view_data; auto str = std::move(model_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); } }