//this file is generated by program(drogon_ctl) automatically,don't modify it!
#include "model_json.h"
#include <drogon/utils/OStringStream.h>
#include <drogon/utils/Utilities.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>
using namespace drogon;
std::string model_json::genText(const DrTemplateData& model_json_view_data)
{
	drogon::OStringStream model_json_tmp_stream;
	std::string layoutName{""};
	model_json_tmp_stream << "{\n";
	model_json_tmp_stream << "    //rdbms: server type, postgresql,mysql or sqlite3\n";
	model_json_tmp_stream << "    \"rdbms\": \"postgresql\",\n";
	model_json_tmp_stream << "    //filename: sqlite3 db file name\n";
	model_json_tmp_stream << "    //\"filename\":\"\",\n";
	model_json_tmp_stream << "    //host: server address,localhost by default;\n";
	model_json_tmp_stream << "    \"host\": \"127.0.0.1\",\n";
	model_json_tmp_stream << "    //port: server port, 5432 by default;\n";
	model_json_tmp_stream << "    \"port\": 5432,\n";
	model_json_tmp_stream << "    //dbname: Database name;\n";
	model_json_tmp_stream << "    \"dbname\": \"\",\n";
	model_json_tmp_stream << "    //schema: valid for postgreSQL, \"public\" by default;\n";
	model_json_tmp_stream << "    \"schema\": \"public\",\n";
	model_json_tmp_stream << "    //user: User name\n";
	model_json_tmp_stream << "    \"user\": \"\",\n";
	model_json_tmp_stream << "    //password or passwd: Password\n";
	model_json_tmp_stream << "    \"password\": \"\",\n";
	model_json_tmp_stream << "    //client_encoding: The character set used by drogon_ctl. it is empty string by default which \n";
	model_json_tmp_stream << "    //means use the default character set.\n";
	model_json_tmp_stream << "    //\"client_encoding\": \"\",\n";
	model_json_tmp_stream << "    //table: An array of tables to be modelized. if the array is empty, all revealed tables are modelized.\n";
	model_json_tmp_stream << "    \"tables\": [],\n";
	model_json_tmp_stream << "    //convert: the value can be changed by a function call before it is stored into database or\n";
	model_json_tmp_stream << "    //after it is read from database\n";
	model_json_tmp_stream << "    \"convert\": {\n";
	model_json_tmp_stream << "      \"enabled\": false,\n";
	model_json_tmp_stream << "      \"items\":[{\n";
	model_json_tmp_stream << "          \"table\": \"user\",\n";
	model_json_tmp_stream << "          \"column\": \"password\",\n";
	model_json_tmp_stream << "          \"method\": {\n";
	model_json_tmp_stream << "            //after_db_read: name of the method which is called after reading from database, signature: void([const] std::shared_ptr [&])\n";
	model_json_tmp_stream << "            \"after_db_read\": \"decrypt_password\",\n";
	model_json_tmp_stream << "            //before_db_write: name of the method which is called before writing to database, signature: void([const] std::shared_ptr [&])\n";
	model_json_tmp_stream << "            \"before_db_write\": \"encrypt_password\"\n";
	model_json_tmp_stream << "          },\n";
	model_json_tmp_stream << "          \"includes\": [\n";
	model_json_tmp_stream << "            \"\\\"file_local_search_path.h\\\"\",\"<file_in_global_search_path.h>\"\n";
	model_json_tmp_stream << "          ]\n";
	model_json_tmp_stream << "      }]\n";
	model_json_tmp_stream << "    },\n";
	model_json_tmp_stream << "    \"relationships\": {\n";
	model_json_tmp_stream << "        \"enabled\": false,\n";
	model_json_tmp_stream << "        \"items\": [{\n";
	model_json_tmp_stream << "                \"type\": \"has one\",\n";
	model_json_tmp_stream << "                \"original_table_name\": \"products\",\n";
	model_json_tmp_stream << "                \"original_table_alias\": \"product\",\n";
	model_json_tmp_stream << "                \"original_key\": \"id\",\n";
	model_json_tmp_stream << "                \"target_table_name\": \"skus\",\n";
	model_json_tmp_stream << "                \"target_table_alias\": \"SKU\",\n";
	model_json_tmp_stream << "                \"target_key\": \"product_id\",\n";
	model_json_tmp_stream << "                \"enable_reverse\": true\n";
	model_json_tmp_stream << "            },\n";
	model_json_tmp_stream << "            {\n";
	model_json_tmp_stream << "                \"type\": \"has many\",\n";
	model_json_tmp_stream << "                \"original_table_name\": \"products\",\n";
	model_json_tmp_stream << "                \"original_table_alias\": \"product\",\n";
	model_json_tmp_stream << "                \"original_key\": \"id\",\n";
	model_json_tmp_stream << "                \"target_table_name\": \"reviews\",\n";
	model_json_tmp_stream << "                \"target_table_alias\": \"\",\n";
	model_json_tmp_stream << "                \"target_key\": \"product_id\",\n";
	model_json_tmp_stream << "                \"enable_reverse\": true\n";
	model_json_tmp_stream << "            },\n";
	model_json_tmp_stream << "            {\n";
	model_json_tmp_stream << "                \"type\": \"many to many\",\n";
	model_json_tmp_stream << "                \"original_table_name\": \"products\",\n";
	model_json_tmp_stream << "                \"original_table_alias\": \"\",\n";
	model_json_tmp_stream << "                \"original_key\": \"id\",\n";
	model_json_tmp_stream << "                \"pivot_table\": {\n";
	model_json_tmp_stream << "                    \"table_name\": \"carts_products\",\n";
	model_json_tmp_stream << "                    \"original_key\": \"product_id\",\n";
	model_json_tmp_stream << "                    \"target_key\": \"cart_id\"\n";
	model_json_tmp_stream << "                },\n";
	model_json_tmp_stream << "                \"target_table_name\": \"carts\",\n";
	model_json_tmp_stream << "                \"target_table_alias\": \"\",\n";
	model_json_tmp_stream << "                \"target_key\": \"id\",\n";
	model_json_tmp_stream << "                \"enable_reverse\": true\n";
	model_json_tmp_stream << "            }\n";
	model_json_tmp_stream << "        ]\n";
	model_json_tmp_stream << "    },\n";
	model_json_tmp_stream << "    \"restful_api_controllers\": {\n";
	model_json_tmp_stream << "        \"enabled\": false,\n";
	model_json_tmp_stream << "        // resource_uri: The URI to access the resource, the default value \n";
	model_json_tmp_stream << "        // is '/*' in which the asterisk represents the table name.\n";
	model_json_tmp_stream << "        // If this option is set to a empty string, the URI is composed of the namespaces and the class name.\n";
	model_json_tmp_stream << "        \"resource_uri\": \"/*\",\n";
	model_json_tmp_stream << "        // class_name: \"Restful*Ctrl\" by default, the asterisk represents the table name.\n";
	model_json_tmp_stream << "        // This option can contain namespaces.\n";
	model_json_tmp_stream << "        \"class_name\": \"Restful*Ctrl\",\n";
	model_json_tmp_stream << "        // filters: an array of filter names.\n";
	model_json_tmp_stream << "        \"filters\": [],\n";
	model_json_tmp_stream << "        // db_client: the database client used by the controller. this option must be consistent with\n";
	model_json_tmp_stream << "        // the configuration of the application.\n";
	model_json_tmp_stream << "        \"db_client\": {\n";
	model_json_tmp_stream << "            //name: Name of the client,'default' by default\n";
	model_json_tmp_stream << "            \"name\": \"default\",\n";
	model_json_tmp_stream << "            //is_fast: \n";
	model_json_tmp_stream << "            \"is_fast\": false\n";
	model_json_tmp_stream << "        },\n";
	model_json_tmp_stream << "        // directory: The directory where the controller source files are stored.\n";
	model_json_tmp_stream << "        \"directory\": \"controllers\",\n";
	model_json_tmp_stream << "        // generate_base_only: false by default. Set to true to avoid overwriting custom subclasses.\n";
	model_json_tmp_stream << "        \"generate_base_only\": false\n";
	model_json_tmp_stream << "    }\n";
	model_json_tmp_stream << "}\n";
if(layoutName.empty())
{
std::string ret{std::move(model_json_tmp_stream.str())};
return ret;
}else
{
auto templ = DrTemplateBase::newTemplate(layoutName);
if(!templ) return "";
HttpViewData data = model_json_view_data;
auto str = std::move(model_json_tmp_stream.str());
if(!str.empty() && str[str.length()-1] == '\n') str.resize(str.length()-1);
data[""] = std::move(str);
return templ->genText(data);
}
}
