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