mirror of
https://gitee.com/an-tao/drogon.git
synced 2024-12-11 06:00:59 +08:00
70eda27427
* Add the ability to create restful API controllers * Update the model.json template file * Modify the 'create controller' command of the drogon_ctl * access column values by column array indexes instead of column names when constructing an instance of a model class * Fix a bug of mysql database * Add some static SQL into models * Add validations to models * Add setToNull method to models * Support 'where in' substatement * Delay rendering from json to the response body. This allows users to modify the json object before sending a response. * Add synchronous method to the HttpClient class
381 lines
13 KiB
C++
381 lines
13 KiB
C++
/**
|
|
*
|
|
* Users.h
|
|
* DO NOT EDIT. This file is generated by drogon_ctl
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
#include <drogon/orm/Result.h>
|
|
#include <drogon/orm/Row.h>
|
|
#include <drogon/orm/Field.h>
|
|
#include <drogon/orm/SqlBinder.h>
|
|
#include <drogon/orm/Mapper.h>
|
|
#include <trantor/utils/Date.h>
|
|
#include <trantor/utils/Logger.h>
|
|
#include <json/json.h>
|
|
#include <string>
|
|
#include <memory>
|
|
#include <vector>
|
|
#include <tuple>
|
|
#include <stdint.h>
|
|
#include <iostream>
|
|
|
|
using namespace drogon::orm;
|
|
|
|
namespace drogon_model
|
|
{
|
|
namespace postgres
|
|
{
|
|
class Users
|
|
{
|
|
public:
|
|
struct Cols
|
|
{
|
|
static const std::string _user_id;
|
|
static const std::string _user_name;
|
|
static const std::string _password;
|
|
static const std::string _org_name;
|
|
static const std::string _signature;
|
|
static const std::string _avatar_id;
|
|
static const std::string _id;
|
|
static const std::string _salt;
|
|
static const std::string _admin;
|
|
};
|
|
|
|
const static int primaryKeyNumber;
|
|
const static std::string tableName;
|
|
const static bool hasPrimaryKey;
|
|
const static std::string primaryKeyName;
|
|
typedef int32_t PrimaryKeyType;
|
|
const PrimaryKeyType &getPrimaryKey() const;
|
|
|
|
/**
|
|
* @brief constructor
|
|
* @param r One row of records in the SQL query result.
|
|
* @param indexOffset Set the offset to -1 to access all columns by column
|
|
* names, otherwise access all columns by offsets.
|
|
* @note If the SQL is not a style of 'select * from table_name ...' (select
|
|
* all columns by an asterisk), please set the offset to -1.
|
|
*/
|
|
explicit Users(const Row &r, const ssize_t indexOffset = 0) noexcept;
|
|
|
|
/**
|
|
* @brief constructor
|
|
* @param pJson The json object to construct a new instance.
|
|
*/
|
|
explicit Users(const Json::Value &pJson) noexcept(false);
|
|
|
|
/**
|
|
* @brief constructor
|
|
* @param pJson The json object to construct a new instance.
|
|
* @param pMasqueradingVector The aliases of table columns.
|
|
*/
|
|
Users(const Json::Value &pJson,
|
|
const std::vector<std::string> &pMasqueradingVector) noexcept(false);
|
|
|
|
Users() = default;
|
|
|
|
void updateByJson(const Json::Value &pJson) noexcept(false);
|
|
void updateByMasqueradedJson(
|
|
const Json::Value &pJson,
|
|
const std::vector<std::string> &pMasqueradingVector) noexcept(false);
|
|
static bool validateJsonForCreation(const Json::Value &pJson,
|
|
std::string &err);
|
|
static bool validateMasqueradedJsonForCreation(
|
|
const Json::Value &,
|
|
const std::vector<std::string> &pMasqueradingVector,
|
|
std::string &err);
|
|
static bool validateJsonForUpdate(const Json::Value &pJson,
|
|
std::string &err);
|
|
static bool validateMasqueradedJsonForUpdate(
|
|
const Json::Value &,
|
|
const std::vector<std::string> &pMasqueradingVector,
|
|
std::string &err);
|
|
static bool validJsonOfField(size_t index,
|
|
const std::string &fieldName,
|
|
const Json::Value &pJson,
|
|
std::string &err,
|
|
bool isForCreation);
|
|
|
|
/** For column user_id */
|
|
/// Get the value of the column user_id, returns the default value if the
|
|
/// column is null
|
|
const std::string &getValueOfUserId() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<std::string> &getUserId() const noexcept;
|
|
/// Set the value of the column user_id
|
|
void setUserId(const std::string &pUserId) noexcept;
|
|
void setUserId(std::string &&pUserId) noexcept;
|
|
void setUserIdToNull() noexcept;
|
|
|
|
/** For column user_name */
|
|
/// Get the value of the column user_name, returns the default value if the
|
|
/// column is null
|
|
const std::string &getValueOfUserName() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<std::string> &getUserName() const noexcept;
|
|
/// Set the value of the column user_name
|
|
void setUserName(const std::string &pUserName) noexcept;
|
|
void setUserName(std::string &&pUserName) noexcept;
|
|
void setUserNameToNull() noexcept;
|
|
|
|
/** For column password */
|
|
/// Get the value of the column password, returns the default value if the
|
|
/// column is null
|
|
const std::string &getValueOfPassword() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<std::string> &getPassword() const noexcept;
|
|
/// Set the value of the column password
|
|
void setPassword(const std::string &pPassword) noexcept;
|
|
void setPassword(std::string &&pPassword) noexcept;
|
|
void setPasswordToNull() noexcept;
|
|
|
|
/** For column org_name */
|
|
/// Get the value of the column org_name, returns the default value if the
|
|
/// column is null
|
|
const std::string &getValueOfOrgName() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<std::string> &getOrgName() const noexcept;
|
|
/// Set the value of the column org_name
|
|
void setOrgName(const std::string &pOrgName) noexcept;
|
|
void setOrgName(std::string &&pOrgName) noexcept;
|
|
void setOrgNameToNull() noexcept;
|
|
|
|
/** For column signature */
|
|
/// Get the value of the column signature, returns the default value if the
|
|
/// column is null
|
|
const std::string &getValueOfSignature() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<std::string> &getSignature() const noexcept;
|
|
/// Set the value of the column signature
|
|
void setSignature(const std::string &pSignature) noexcept;
|
|
void setSignature(std::string &&pSignature) noexcept;
|
|
void setSignatureToNull() noexcept;
|
|
|
|
/** For column avatar_id */
|
|
/// Get the value of the column avatar_id, returns the default value if the
|
|
/// column is null
|
|
const std::string &getValueOfAvatarId() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<std::string> &getAvatarId() const noexcept;
|
|
/// Set the value of the column avatar_id
|
|
void setAvatarId(const std::string &pAvatarId) noexcept;
|
|
void setAvatarId(std::string &&pAvatarId) noexcept;
|
|
void setAvatarIdToNull() noexcept;
|
|
|
|
/** For column id */
|
|
/// Get the value of the column id, returns the default value if the column
|
|
/// is null
|
|
const int32_t &getValueOfId() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<int32_t> &getId() const noexcept;
|
|
|
|
/** For column salt */
|
|
/// Get the value of the column salt, returns the default value if the
|
|
/// column is null
|
|
const std::string &getValueOfSalt() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<std::string> &getSalt() const noexcept;
|
|
/// Set the value of the column salt
|
|
void setSalt(const std::string &pSalt) noexcept;
|
|
void setSalt(std::string &&pSalt) noexcept;
|
|
void setSaltToNull() noexcept;
|
|
|
|
/** For column admin */
|
|
/// Get the value of the column admin, returns the default value if the
|
|
/// column is null
|
|
const bool &getValueOfAdmin() const noexcept;
|
|
/// Return a shared_ptr object pointing to the column const value, or an
|
|
/// empty shared_ptr object if the column is null
|
|
const std::shared_ptr<bool> &getAdmin() const noexcept;
|
|
/// Set the value of the column admin
|
|
void setAdmin(const bool &pAdmin) noexcept;
|
|
void setAdminToNull() noexcept;
|
|
|
|
static size_t getColumnNumber() noexcept
|
|
{
|
|
return 9;
|
|
}
|
|
static const std::string &getColumnName(size_t index) noexcept(false);
|
|
|
|
Json::Value toJson() const;
|
|
Json::Value toMasqueradedJson(
|
|
const std::vector<std::string> &pMasqueradingVector) const;
|
|
|
|
private:
|
|
friend Mapper<Users>;
|
|
static const std::vector<std::string> &insertColumns() noexcept;
|
|
void outputArgs(drogon::orm::internal::SqlBinder &binder) const;
|
|
const std::vector<std::string> updateColumns() const;
|
|
void updateArgs(drogon::orm::internal::SqlBinder &binder) const;
|
|
/// For mysql or sqlite3
|
|
void updateId(const uint64_t id);
|
|
std::shared_ptr<std::string> _userId;
|
|
std::shared_ptr<std::string> _userName;
|
|
std::shared_ptr<std::string> _password;
|
|
std::shared_ptr<std::string> _orgName;
|
|
std::shared_ptr<std::string> _signature;
|
|
std::shared_ptr<std::string> _avatarId;
|
|
std::shared_ptr<int32_t> _id;
|
|
std::shared_ptr<std::string> _salt;
|
|
std::shared_ptr<bool> _admin;
|
|
struct MetaData
|
|
{
|
|
const std::string _colName;
|
|
const std::string _colType;
|
|
const std::string _colDatabaseType;
|
|
const ssize_t _colLength;
|
|
const bool _isAutoVal;
|
|
const bool _isPrimaryKey;
|
|
const bool _notNull;
|
|
};
|
|
static const std::vector<MetaData> _metaData;
|
|
bool _dirtyFlag[9] = {false};
|
|
|
|
public:
|
|
static const std::string &sqlForFindingByPrimaryKey()
|
|
{
|
|
static const std::string sql =
|
|
"select * from " + tableName + " where id = $1";
|
|
return sql;
|
|
}
|
|
|
|
static const std::string &sqlForDeletingByPrimaryKey()
|
|
{
|
|
static const std::string sql =
|
|
"delete from " + tableName + " where id = $1";
|
|
return sql;
|
|
}
|
|
std::string sqlForInserting(bool &needSelection) const
|
|
{
|
|
std::string sql = "insert into " + tableName + " (";
|
|
size_t parametersCount = 0;
|
|
needSelection = false;
|
|
if (_dirtyFlag[0])
|
|
{
|
|
sql += "user_id,";
|
|
++parametersCount;
|
|
}
|
|
if (_dirtyFlag[1])
|
|
{
|
|
sql += "user_name,";
|
|
++parametersCount;
|
|
}
|
|
if (_dirtyFlag[2])
|
|
{
|
|
sql += "password,";
|
|
++parametersCount;
|
|
}
|
|
if (_dirtyFlag[3])
|
|
{
|
|
sql += "org_name,";
|
|
++parametersCount;
|
|
}
|
|
if (_dirtyFlag[4])
|
|
{
|
|
sql += "signature,";
|
|
++parametersCount;
|
|
}
|
|
if (_dirtyFlag[5])
|
|
{
|
|
sql += "avatar_id,";
|
|
++parametersCount;
|
|
}
|
|
sql += "id,";
|
|
++parametersCount;
|
|
if (_dirtyFlag[7])
|
|
{
|
|
sql += "salt,";
|
|
++parametersCount;
|
|
}
|
|
sql += "admin,";
|
|
++parametersCount;
|
|
if (!_dirtyFlag[8])
|
|
{
|
|
needSelection = true;
|
|
}
|
|
needSelection = true;
|
|
if (parametersCount > 0)
|
|
{
|
|
sql[sql.length() - 1] = ')';
|
|
sql += " values (";
|
|
}
|
|
else
|
|
sql += ") values (";
|
|
|
|
int placeholder = 1;
|
|
char placeholderStr[64];
|
|
size_t n = 0;
|
|
if (_dirtyFlag[0])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
if (_dirtyFlag[1])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
if (_dirtyFlag[2])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
if (_dirtyFlag[3])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
if (_dirtyFlag[4])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
if (_dirtyFlag[5])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
sql += "default,";
|
|
if (_dirtyFlag[7])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
if (_dirtyFlag[8])
|
|
{
|
|
n = sprintf(placeholderStr, "$%d,", placeholder++);
|
|
sql.append(placeholderStr, n);
|
|
}
|
|
else
|
|
{
|
|
sql += "default,";
|
|
}
|
|
if (parametersCount > 0)
|
|
{
|
|
sql.resize(sql.length() - 1);
|
|
}
|
|
if (needSelection)
|
|
{
|
|
sql.append(") returning *");
|
|
}
|
|
else
|
|
{
|
|
sql.append(1, ')');
|
|
}
|
|
LOG_TRACE << sql;
|
|
return sql;
|
|
}
|
|
};
|
|
} // namespace postgres
|
|
} // namespace drogon_model
|