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);
43 {TableType::Base,
"base"},
44 {TableType::Auth,
"auth"},
45 {TableType::View,
"view"}
48 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,
71 { FieldType::XML,
"xml" },
72 { FieldType::STRING,
"string" },
73 { FieldType::DOUBLE,
"double" },
74 { FieldType::DATE,
"date" },
75 { FieldType::INT8,
"int8" },
76 { FieldType::UINT8,
"uint8" },
77 { FieldType::INT16,
"int16" },
78 { FieldType::UINT16,
"uint16" },
79 { FieldType::INT32,
"int32" },
80 { FieldType::UINT32,
"uint32" },
81 { FieldType::INT64,
"int64" },
82 { FieldType::UINT64,
"uint64" },
83 { FieldType::BLOB,
"blob" },
84 { FieldType::JSON,
"json" },
85 { FieldType::BOOL,
"bool" },
86 { FieldType::FILE,
"file" },
87 { FieldType::FILES,
"files" },
90 const std::vector<std::string> baseFields = {
"id",
"created",
"updated"};
91 const std::vector<std::string>
authFields = {
"id",
"created",
"updated",
"name",
"email",
"password"};
93 std::optional<FieldType>
getFieldType(
const std::string& fieldName);
121 Field(std::string n,
FieldType t,
bool req =
false,
bool pk =
false,
bool sys =
false,
122 json opts = json::object());
159 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:31
nlohmann::json json
Shorten JSON namespace.
Definition crud.h:14
FieldType
Definition models.h:68
bool fieldExists(const TableType &type, const std::string &fieldName)
Definition models.cpp:92
bool isValidFieldType(const std::string &fieldType)
Definition models.cpp:115
std::string Rule
Definition models.h:100
std::optional< FieldType > getFieldType(const std::string &fieldName)
Definition models.cpp:70
TableType
Definition models.h:36
const std::vector< std::string > authFields
Definition models.h:91
NLOHMANN_JSON_SERIALIZE_ENUM(TableType, { {TableType::Base, "base"}, {TableType::Auth, "auth"}, {TableType::View, "view"} }) typedef enum class FieldTypeDecl
Definition models.h:42
AdminTable()
Definition models.cpp:350
bool enableSync
Definition models.h:201
std::string usernameField
Definition models.h:173
bool enableSync
Definition models.h:175
std::string passwordField
Definition models.h:174
~AuthTable() override=default
AuthTable()
Definition models.cpp:318
bool enableSync
Definition models.h:165
BaseTable()
Definition models.cpp:308
bool isUnique
Definition models.h:116
std::string name
Definition models.h:105
json to_json() const
Definition models.cpp:189
soci::db_type toSociType() const
Definition models.cpp:206
std::optional< std::string > defaultValue
Definition models.h:112
std::optional< std::string > autoGeneratePattern
Definition models.h:118
std::optional< std::string > regexPattern
Definition models.h:113
bool required
Definition models.h:108
std::optional< double > minValue
Definition models.h:114
std::optional< std::string > validator
Definition models.h:117
FieldType type
Definition models.h:106
bool primaryKey
Definition models.h:109
std::optional< double > maxValue
Definition models.h:115
bool system
Definition models.h:110
bool enableSync
Definition models.h:193
~SystemTable() override=default
SystemTable()
Definition models.cpp:339
std::vector< Field > fields
Definition models.h:144
bool has_api
Definition models.h:142
std::string name
Definition models.h:139
Rule getRule
Definition models.h:147
Rule deleteRule
Definition models.h:150
virtual std::string to_sql() const
Definition models.cpp:254
bool system
Definition models.h:141
TableType type
Definition models.h:140
std::string id
Definition models.h:138
virtual json to_json() const
Definition models.cpp:233
Rule addRule
Definition models.h:148
Rule updateRule
Definition models.h:149
Rule listRule
Definition models.h:146
std::string sourceSQL
Definition models.h:185
ViewTable()
Definition models.cpp:334
bool enableSync
Definition models.h:186