632 lines
16 KiB
C++
632 lines
16 KiB
C++
/**
|
|
*
|
|
* Tokens.cc
|
|
* DO NOT EDIT. This file is generated by drogon_ctl
|
|
*
|
|
*/
|
|
|
|
#include "Tokens.h"
|
|
#include "drogon/utils/Utilities.h"
|
|
#include <string>
|
|
|
|
using namespace drogon;
|
|
using namespace drogon::orm;
|
|
using namespace drogon_model::sqlite3;
|
|
|
|
const std::string Tokens::Cols::_id = "id";
|
|
const std::string Tokens::Cols::_owner_id = "owner_id";
|
|
const std::string Tokens::Cols::_exp = "exp";
|
|
const std::string Tokens::primaryKeyName = "id";
|
|
const bool Tokens::hasPrimaryKey = true;
|
|
const std::string Tokens::tableName = "tokens";
|
|
|
|
const std::vector<typename Tokens::MetaData> Tokens::metaData_={
|
|
{"id","uint64_t","integer",8,1,1,1},
|
|
{"owner_id","uint64_t","integer",8,0,0,1},
|
|
{"exp","uint64_t","integer",8,0,0,1}
|
|
};
|
|
const std::string &Tokens::getColumnName(size_t index) noexcept(false)
|
|
{
|
|
assert(index < metaData_.size());
|
|
return metaData_[index].colName_;
|
|
}
|
|
Tokens::Tokens(const Row &r, const ssize_t indexOffset) noexcept
|
|
{
|
|
if(indexOffset < 0)
|
|
{
|
|
if(!r["id"].isNull())
|
|
{
|
|
id_=std::make_shared<uint64_t>(r["id"].as<uint64_t>());
|
|
}
|
|
if(!r["owner_id"].isNull())
|
|
{
|
|
ownerId_=std::make_shared<uint64_t>(r["owner_id"].as<uint64_t>());
|
|
}
|
|
if(!r["exp"].isNull())
|
|
{
|
|
exp_=std::make_shared<uint64_t>(r["exp"].as<uint64_t>());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
size_t offset = (size_t)indexOffset;
|
|
if(offset + 3 > r.size())
|
|
{
|
|
LOG_FATAL << "Invalid SQL result for this model";
|
|
return;
|
|
}
|
|
size_t index;
|
|
index = offset + 0;
|
|
if(!r[index].isNull())
|
|
{
|
|
id_=std::make_shared<uint64_t>(r[index].as<uint64_t>());
|
|
}
|
|
index = offset + 1;
|
|
if(!r[index].isNull())
|
|
{
|
|
ownerId_=std::make_shared<uint64_t>(r[index].as<uint64_t>());
|
|
}
|
|
index = offset + 2;
|
|
if(!r[index].isNull())
|
|
{
|
|
exp_=std::make_shared<uint64_t>(r[index].as<uint64_t>());
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
Tokens::Tokens(const Json::Value &pJson, const std::vector<std::string> &pMasqueradingVector) noexcept(false)
|
|
{
|
|
if(pMasqueradingVector.size() != 3)
|
|
{
|
|
LOG_ERROR << "Bad masquerading vector";
|
|
return;
|
|
}
|
|
if(!pMasqueradingVector[0].empty() && pJson.isMember(pMasqueradingVector[0]))
|
|
{
|
|
dirtyFlag_[0] = true;
|
|
if(!pJson[pMasqueradingVector[0]].isNull())
|
|
{
|
|
id_=std::make_shared<uint64_t>((uint64_t)pJson[pMasqueradingVector[0]].asUInt64());
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[1].empty() && pJson.isMember(pMasqueradingVector[1]))
|
|
{
|
|
dirtyFlag_[1] = true;
|
|
if(!pJson[pMasqueradingVector[1]].isNull())
|
|
{
|
|
ownerId_=std::make_shared<uint64_t>((uint64_t)pJson[pMasqueradingVector[1]].asUInt64());
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[2].empty() && pJson.isMember(pMasqueradingVector[2]))
|
|
{
|
|
dirtyFlag_[2] = true;
|
|
if(!pJson[pMasqueradingVector[2]].isNull())
|
|
{
|
|
exp_=std::make_shared<uint64_t>((uint64_t)pJson[pMasqueradingVector[2]].asUInt64());
|
|
}
|
|
}
|
|
}
|
|
|
|
Tokens::Tokens(const Json::Value &pJson) noexcept(false)
|
|
{
|
|
if(pJson.isMember("id"))
|
|
{
|
|
dirtyFlag_[0]=true;
|
|
if(!pJson["id"].isNull())
|
|
{
|
|
id_=std::make_shared<uint64_t>((uint64_t)pJson["id"].asUInt64());
|
|
}
|
|
}
|
|
if(pJson.isMember("owner_id"))
|
|
{
|
|
dirtyFlag_[1]=true;
|
|
if(!pJson["owner_id"].isNull())
|
|
{
|
|
ownerId_=std::make_shared<uint64_t>((uint64_t)pJson["owner_id"].asUInt64());
|
|
}
|
|
}
|
|
if(pJson.isMember("exp"))
|
|
{
|
|
dirtyFlag_[2]=true;
|
|
if(!pJson["exp"].isNull())
|
|
{
|
|
exp_=std::make_shared<uint64_t>((uint64_t)pJson["exp"].asUInt64());
|
|
}
|
|
}
|
|
}
|
|
|
|
void Tokens::updateByMasqueradedJson(const Json::Value &pJson,
|
|
const std::vector<std::string> &pMasqueradingVector) noexcept(false)
|
|
{
|
|
if(pMasqueradingVector.size() != 3)
|
|
{
|
|
LOG_ERROR << "Bad masquerading vector";
|
|
return;
|
|
}
|
|
if(!pMasqueradingVector[0].empty() && pJson.isMember(pMasqueradingVector[0]))
|
|
{
|
|
if(!pJson[pMasqueradingVector[0]].isNull())
|
|
{
|
|
id_=std::make_shared<uint64_t>((uint64_t)pJson[pMasqueradingVector[0]].asUInt64());
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[1].empty() && pJson.isMember(pMasqueradingVector[1]))
|
|
{
|
|
dirtyFlag_[1] = true;
|
|
if(!pJson[pMasqueradingVector[1]].isNull())
|
|
{
|
|
ownerId_=std::make_shared<uint64_t>((uint64_t)pJson[pMasqueradingVector[1]].asUInt64());
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[2].empty() && pJson.isMember(pMasqueradingVector[2]))
|
|
{
|
|
dirtyFlag_[2] = true;
|
|
if(!pJson[pMasqueradingVector[2]].isNull())
|
|
{
|
|
exp_=std::make_shared<uint64_t>((uint64_t)pJson[pMasqueradingVector[2]].asUInt64());
|
|
}
|
|
}
|
|
}
|
|
|
|
void Tokens::updateByJson(const Json::Value &pJson) noexcept(false)
|
|
{
|
|
if(pJson.isMember("id"))
|
|
{
|
|
if(!pJson["id"].isNull())
|
|
{
|
|
id_=std::make_shared<uint64_t>((uint64_t)pJson["id"].asUInt64());
|
|
}
|
|
}
|
|
if(pJson.isMember("owner_id"))
|
|
{
|
|
dirtyFlag_[1] = true;
|
|
if(!pJson["owner_id"].isNull())
|
|
{
|
|
ownerId_=std::make_shared<uint64_t>((uint64_t)pJson["owner_id"].asUInt64());
|
|
}
|
|
}
|
|
if(pJson.isMember("exp"))
|
|
{
|
|
dirtyFlag_[2] = true;
|
|
if(!pJson["exp"].isNull())
|
|
{
|
|
exp_=std::make_shared<uint64_t>((uint64_t)pJson["exp"].asUInt64());
|
|
}
|
|
}
|
|
}
|
|
|
|
const uint64_t &Tokens::getValueOfId() const noexcept
|
|
{
|
|
const static uint64_t defaultValue = uint64_t();
|
|
if(id_)
|
|
return *id_;
|
|
return defaultValue;
|
|
}
|
|
const std::shared_ptr<uint64_t> &Tokens::getId() const noexcept
|
|
{
|
|
return id_;
|
|
}
|
|
void Tokens::setId(const uint64_t &pId) noexcept
|
|
{
|
|
id_ = std::make_shared<uint64_t>(pId);
|
|
dirtyFlag_[0] = true;
|
|
}
|
|
const typename Tokens::PrimaryKeyType & Tokens::getPrimaryKey() const
|
|
{
|
|
assert(id_);
|
|
return *id_;
|
|
}
|
|
|
|
const uint64_t &Tokens::getValueOfOwnerId() const noexcept
|
|
{
|
|
const static uint64_t defaultValue = uint64_t();
|
|
if(ownerId_)
|
|
return *ownerId_;
|
|
return defaultValue;
|
|
}
|
|
const std::shared_ptr<uint64_t> &Tokens::getOwnerId() const noexcept
|
|
{
|
|
return ownerId_;
|
|
}
|
|
void Tokens::setOwnerId(const uint64_t &pOwnerId) noexcept
|
|
{
|
|
ownerId_ = std::make_shared<uint64_t>(pOwnerId);
|
|
dirtyFlag_[1] = true;
|
|
}
|
|
|
|
const uint64_t &Tokens::getValueOfExp() const noexcept
|
|
{
|
|
const static uint64_t defaultValue = uint64_t();
|
|
if(exp_)
|
|
return *exp_;
|
|
return defaultValue;
|
|
}
|
|
const std::shared_ptr<uint64_t> &Tokens::getExp() const noexcept
|
|
{
|
|
return exp_;
|
|
}
|
|
void Tokens::setExp(const uint64_t &pExp) noexcept
|
|
{
|
|
exp_ = std::make_shared<uint64_t>(pExp);
|
|
dirtyFlag_[2] = true;
|
|
}
|
|
|
|
void Tokens::updateId(const uint64_t id)
|
|
{
|
|
id_ = std::make_shared<uint64_t>(id);
|
|
}
|
|
|
|
const std::vector<std::string> &Tokens::insertColumns() noexcept
|
|
{
|
|
static const std::vector<std::string> inCols={
|
|
"owner_id",
|
|
"exp"
|
|
};
|
|
return inCols;
|
|
}
|
|
|
|
void Tokens::outputArgs(drogon::orm::internal::SqlBinder &binder) const
|
|
{
|
|
if(dirtyFlag_[1])
|
|
{
|
|
if(getOwnerId())
|
|
{
|
|
binder << getValueOfOwnerId();
|
|
}
|
|
else
|
|
{
|
|
binder << nullptr;
|
|
}
|
|
}
|
|
if(dirtyFlag_[2])
|
|
{
|
|
if(getExp())
|
|
{
|
|
binder << getValueOfExp();
|
|
}
|
|
else
|
|
{
|
|
binder << nullptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
const std::vector<std::string> Tokens::updateColumns() const
|
|
{
|
|
std::vector<std::string> ret;
|
|
if(dirtyFlag_[1])
|
|
{
|
|
ret.push_back(getColumnName(1));
|
|
}
|
|
if(dirtyFlag_[2])
|
|
{
|
|
ret.push_back(getColumnName(2));
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
void Tokens::updateArgs(drogon::orm::internal::SqlBinder &binder) const
|
|
{
|
|
if(dirtyFlag_[1])
|
|
{
|
|
if(getOwnerId())
|
|
{
|
|
binder << getValueOfOwnerId();
|
|
}
|
|
else
|
|
{
|
|
binder << nullptr;
|
|
}
|
|
}
|
|
if(dirtyFlag_[2])
|
|
{
|
|
if(getExp())
|
|
{
|
|
binder << getValueOfExp();
|
|
}
|
|
else
|
|
{
|
|
binder << nullptr;
|
|
}
|
|
}
|
|
}
|
|
Json::Value Tokens::toJson() const
|
|
{
|
|
Json::Value ret;
|
|
if(getId())
|
|
{
|
|
ret["id"]=(Json::UInt64)getValueOfId();
|
|
}
|
|
else
|
|
{
|
|
ret["id"]=Json::Value();
|
|
}
|
|
if(getOwnerId())
|
|
{
|
|
ret["owner_id"]=(Json::UInt64)getValueOfOwnerId();
|
|
}
|
|
else
|
|
{
|
|
ret["owner_id"]=Json::Value();
|
|
}
|
|
if(getExp())
|
|
{
|
|
ret["exp"]=(Json::UInt64)getValueOfExp();
|
|
}
|
|
else
|
|
{
|
|
ret["exp"]=Json::Value();
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
Json::Value Tokens::toMasqueradedJson(
|
|
const std::vector<std::string> &pMasqueradingVector) const
|
|
{
|
|
Json::Value ret;
|
|
if(pMasqueradingVector.size() == 3)
|
|
{
|
|
if(!pMasqueradingVector[0].empty())
|
|
{
|
|
if(getId())
|
|
{
|
|
ret[pMasqueradingVector[0]]=(Json::UInt64)getValueOfId();
|
|
}
|
|
else
|
|
{
|
|
ret[pMasqueradingVector[0]]=Json::Value();
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[1].empty())
|
|
{
|
|
if(getOwnerId())
|
|
{
|
|
ret[pMasqueradingVector[1]]=(Json::UInt64)getValueOfOwnerId();
|
|
}
|
|
else
|
|
{
|
|
ret[pMasqueradingVector[1]]=Json::Value();
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[2].empty())
|
|
{
|
|
if(getExp())
|
|
{
|
|
ret[pMasqueradingVector[2]]=(Json::UInt64)getValueOfExp();
|
|
}
|
|
else
|
|
{
|
|
ret[pMasqueradingVector[2]]=Json::Value();
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
LOG_ERROR << "Masquerade failed";
|
|
if(getId())
|
|
{
|
|
ret["id"]=(Json::UInt64)getValueOfId();
|
|
}
|
|
else
|
|
{
|
|
ret["id"]=Json::Value();
|
|
}
|
|
if(getOwnerId())
|
|
{
|
|
ret["owner_id"]=(Json::UInt64)getValueOfOwnerId();
|
|
}
|
|
else
|
|
{
|
|
ret["owner_id"]=Json::Value();
|
|
}
|
|
if(getExp())
|
|
{
|
|
ret["exp"]=(Json::UInt64)getValueOfExp();
|
|
}
|
|
else
|
|
{
|
|
ret["exp"]=Json::Value();
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
bool Tokens::validateJsonForCreation(const Json::Value &pJson, std::string &err)
|
|
{
|
|
if(pJson.isMember("id"))
|
|
{
|
|
if(!validJsonOfField(0, "id", pJson["id"], err, true))
|
|
return false;
|
|
}
|
|
if(pJson.isMember("owner_id"))
|
|
{
|
|
if(!validJsonOfField(1, "owner_id", pJson["owner_id"], err, true))
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
err="The owner_id column cannot be null";
|
|
return false;
|
|
}
|
|
if(pJson.isMember("exp"))
|
|
{
|
|
if(!validJsonOfField(2, "exp", pJson["exp"], err, true))
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
err="The exp column cannot be null";
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
bool Tokens::validateMasqueradedJsonForCreation(const Json::Value &pJson,
|
|
const std::vector<std::string> &pMasqueradingVector,
|
|
std::string &err)
|
|
{
|
|
if(pMasqueradingVector.size() != 3)
|
|
{
|
|
err = "Bad masquerading vector";
|
|
return false;
|
|
}
|
|
try {
|
|
if(!pMasqueradingVector[0].empty())
|
|
{
|
|
if(pJson.isMember(pMasqueradingVector[0]))
|
|
{
|
|
if(!validJsonOfField(0, pMasqueradingVector[0], pJson[pMasqueradingVector[0]], err, true))
|
|
return false;
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[1].empty())
|
|
{
|
|
if(pJson.isMember(pMasqueradingVector[1]))
|
|
{
|
|
if(!validJsonOfField(1, pMasqueradingVector[1], pJson[pMasqueradingVector[1]], err, true))
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
err="The " + pMasqueradingVector[1] + " column cannot be null";
|
|
return false;
|
|
}
|
|
}
|
|
if(!pMasqueradingVector[2].empty())
|
|
{
|
|
if(pJson.isMember(pMasqueradingVector[2]))
|
|
{
|
|
if(!validJsonOfField(2, pMasqueradingVector[2], pJson[pMasqueradingVector[2]], err, true))
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
err="The " + pMasqueradingVector[2] + " column cannot be null";
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
catch(const Json::LogicError &e)
|
|
{
|
|
err = e.what();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
bool Tokens::validateJsonForUpdate(const Json::Value &pJson, std::string &err)
|
|
{
|
|
if(pJson.isMember("id"))
|
|
{
|
|
if(!validJsonOfField(0, "id", pJson["id"], err, false))
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
err = "The value of primary key must be set in the json object for update";
|
|
return false;
|
|
}
|
|
if(pJson.isMember("owner_id"))
|
|
{
|
|
if(!validJsonOfField(1, "owner_id", pJson["owner_id"], err, false))
|
|
return false;
|
|
}
|
|
if(pJson.isMember("exp"))
|
|
{
|
|
if(!validJsonOfField(2, "exp", pJson["exp"], err, false))
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
bool Tokens::validateMasqueradedJsonForUpdate(const Json::Value &pJson,
|
|
const std::vector<std::string> &pMasqueradingVector,
|
|
std::string &err)
|
|
{
|
|
if(pMasqueradingVector.size() != 3)
|
|
{
|
|
err = "Bad masquerading vector";
|
|
return false;
|
|
}
|
|
try {
|
|
if(!pMasqueradingVector[0].empty() && pJson.isMember(pMasqueradingVector[0]))
|
|
{
|
|
if(!validJsonOfField(0, pMasqueradingVector[0], pJson[pMasqueradingVector[0]], err, false))
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
err = "The value of primary key must be set in the json object for update";
|
|
return false;
|
|
}
|
|
if(!pMasqueradingVector[1].empty() && pJson.isMember(pMasqueradingVector[1]))
|
|
{
|
|
if(!validJsonOfField(1, pMasqueradingVector[1], pJson[pMasqueradingVector[1]], err, false))
|
|
return false;
|
|
}
|
|
if(!pMasqueradingVector[2].empty() && pJson.isMember(pMasqueradingVector[2]))
|
|
{
|
|
if(!validJsonOfField(2, pMasqueradingVector[2], pJson[pMasqueradingVector[2]], err, false))
|
|
return false;
|
|
}
|
|
}
|
|
catch(const Json::LogicError &e)
|
|
{
|
|
err = e.what();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
bool Tokens::validJsonOfField(size_t index,
|
|
const std::string &fieldName,
|
|
const Json::Value &pJson,
|
|
std::string &err,
|
|
bool isForCreation)
|
|
{
|
|
switch(index)
|
|
{
|
|
case 0:
|
|
if(pJson.isNull())
|
|
{
|
|
err="The " + fieldName + " column cannot be null";
|
|
return false;
|
|
}
|
|
if(isForCreation)
|
|
{
|
|
err="The automatic primary key cannot be set";
|
|
return false;
|
|
}
|
|
if(!pJson.isUInt64())
|
|
{
|
|
err="Type error in the "+fieldName+" field";
|
|
return false;
|
|
}
|
|
break;
|
|
case 1:
|
|
if(pJson.isNull())
|
|
{
|
|
err="The " + fieldName + " column cannot be null";
|
|
return false;
|
|
}
|
|
if(!pJson.isUInt64())
|
|
{
|
|
err="Type error in the "+fieldName+" field";
|
|
return false;
|
|
}
|
|
break;
|
|
case 2:
|
|
if(pJson.isNull())
|
|
{
|
|
err="The " + fieldName + " column cannot be null";
|
|
return false;
|
|
}
|
|
if(!pJson.isUInt64())
|
|
{
|
|
err="Type error in the "+fieldName+" field";
|
|
return false;
|
|
}
|
|
break;
|
|
default:
|
|
err="Internal error in the server";
|
|
return false;
|
|
break;
|
|
}
|
|
return true;
|
|
}
|