10#include <nlohmann/json.hpp>
14 using json = nlohmann::json;
20 std::unordered_map<std::string, json> m_validators;
25 std::optional<json>
find(
const std::string& key);
27 json validate(
const std::string& key,
const std::string& value);
44 {TableType::Base,
"base"},
45 {TableType::Auth,
"auth"},
46 {TableType::View,
"view"}
49 typedef enum class FieldTypeDecl {
51 STRING = soci::db_string,
52 DOUBLE = soci::db_double,
55 UINT8 = soci::db_uint8,
56 INT16 = soci::db_int16,
57 UINT16 = soci::db_uint16,
58 INT32 = soci::db_int32,
59 UINT32 = soci::db_uint32,
60 INT64 = soci::db_int64,
61 UINT64 = soci::db_uint64,
69 { FieldType::XML,
"xml" },
70 { FieldType::STRING,
"string" },
71 { FieldType::DOUBLE,
"double" },
72 { FieldType::DATE,
"date" },
73 { FieldType::INT8,
"int8" },
74 { FieldType::UINT8,
"uint8" },
75 { FieldType::INT16,
"int16" },
76 { FieldType::UINT16,
"uint16" },
77 { FieldType::INT32,
"int32" },
78 { FieldType::UINT32,
"uint32" },
79 { FieldType::INT64,
"int64" },
80 { FieldType::UINT64,
"uint64" },
81 { FieldType::BLOB,
"blob" },
82 { FieldType::JSON,
"json" },
83 { FieldType::BOOL,
"bool" },
86 const std::vector<std::string> baseFields = {
"id",
"created",
"updated"};
87 const std::vector<std::string>
authFields = {
"id",
"created",
"updated",
"name",
"email",
"password"};
89 std::optional<FieldType>
getFieldType(
const std::string& fieldName);
116 Field(std::string n,
FieldType t,
bool req =
false,
bool pk =
false,
bool sys =
false,
json opts = json::object());
152 virtual std::string
to_sql()
const;
json validate(const std::string &key, const std::string &value)
Definition models.cpp:37
Validator()
Definition models.cpp:8
std::optional< json > find(const std::string &key)
Definition models.cpp:27
nlohmann::json json
Definition mantis.h:35
router.h
Definition app.h:30
nlohmann::json json
Shorten JSON namespace.
Definition crud.h:14
FieldType
Definition models.h:66
bool fieldExists(const TableType &type, const std::string &fieldName)
Definition models.cpp:91
bool isValidFieldType(const std::string &fieldType)
Definition models.cpp:114
std::string Rule
Definition models.h:96
std::optional< FieldType > getFieldType(const std::string &fieldName)
Definition models.cpp:70
TableType
Definition models.h:37
const std::vector< std::string > authFields
Definition models.h:87
NLOHMANN_JSON_SERIALIZE_ENUM(TableType, { {TableType::Base, "base"}, {TableType::Auth, "auth"}, {TableType::View, "view"} }) typedef enum class FieldTypeDecl
Definition models.h:43
AdminTable()
Definition models.cpp:319
bool enableSync
Definition models.h:190
std::string usernameField
Definition models.h:165
bool enableSync
Definition models.h:167
std::string passwordField
Definition models.h:166
~AuthTable() override=default
AuthTable()
Definition models.cpp:287
bool enableSync
Definition models.h:157
BaseTable()
Definition models.cpp:277
bool isUnique
Definition models.h:111
std::string name
Definition models.h:100
json to_json() const
Definition models.cpp:186
soci::db_type toSociType() const
Definition models.cpp:203
std::optional< std::string > defaultValue
Definition models.h:107
std::optional< std::string > autoGeneratePattern
Definition models.h:113
std::optional< std::string > regexPattern
Definition models.h:108
bool required
Definition models.h:103
std::optional< double > minValue
Definition models.h:109
std::optional< std::string > validator
Definition models.h:112
FieldType type
Definition models.h:101
bool primaryKey
Definition models.h:104
std::optional< double > maxValue
Definition models.h:110
bool system
Definition models.h:105
bool enableSync
Definition models.h:183
~SystemTable() override=default
SystemTable()
Definition models.cpp:308
std::vector< Field > fields
Definition models.h:137
bool has_api
Definition models.h:135
std::string name
Definition models.h:132
Rule getRule
Definition models.h:140
Rule deleteRule
Definition models.h:143
virtual std::string to_sql() const
Definition models.cpp:248
bool system
Definition models.h:134
TableType type
Definition models.h:133
std::string id
Definition models.h:131
virtual json to_json() const
Definition models.cpp:227
Rule addRule
Definition models.h:141
Rule updateRule
Definition models.h:142
Rule listRule
Definition models.h:139
std::string sourceSQL
Definition models.h:176
ViewTable()
Definition models.cpp:303
bool enableSync
Definition models.h:177