9#ifndef MANTISBASE_ENTITY_SCHEMA_FIELD_H
10#define MANTISBASE_ENTITY_SCHEMA_FIELD_H
15#include "nlohmann/json.hpp"
16#include "nlohmann/json.hpp"
17#include "soci/soci-backend.h"
68 [[nodiscard]] std::string
id()
const;
74 [[nodiscard]] std::string
name()
const;
87 [[nodiscard]] std::string
type()
const;
100 [[nodiscard]]
bool required()
const;
126 [[nodiscard]]
bool isSystem()
const;
139 [[nodiscard]]
bool isUnique()
const;
187 const std::string &column =
"id",
188 const std::string &onUpdate =
"RESTRICT",
189 const std::string &onDelete =
"RESTRICT");
208 [[nodiscard]] nlohmann::json
constraint(
const std::string &key)
const;
229 [[nodiscard]] nlohmann::json
toJSON()
const;
235 [[nodiscard]] soci::db_type
toSociType()
const;
242 [[nodiscard]]
static soci::db_type
toSociType(
const std::string &
type);
248 [[nodiscard]] std::optional<std::string>
validate()
const;
262 static std::string
genFieldId(
const std::string &
id);
271 std::string m_id, m_name, m_type;
272 bool m_required =
false, m_primaryKey =
false, m_isSystem =
false, m_isUnique =
false;
273 nlohmann::json m_constraints{}, m_foreignKey{};
Represents a single field in a database table schema.
Definition entity_schema_field.h:36
nlohmann::json toJSON() const
Convert field to JSON representation.
Definition entity_schema_field.cpp:302
nlohmann::json constraint(const std::string &key) const
Get specific constraint by key.
Definition entity_schema_field.cpp:267
static const std::vector< std::string > & defaultAuthFields()
Definition entity_schema_base_fields.cpp:190
std::string foreignKeyTable() const
Get foreign key reference table name.
Definition entity_schema_field.cpp:196
std::string foreignKeyColumn() const
Get foreign key reference column name.
Definition entity_schema_field.cpp:200
EntitySchemaField & removeForeignKey()
Remove foreign key constraint (fluent interface).
Definition entity_schema_field.cpp:258
EntitySchemaField & setIsSystem(bool system)
Set system field flag (fluent interface).
Definition entity_schema_field.cpp:175
std::string name() const
Get field name.
Definition entity_schema_field.cpp:126
std::string type() const
Get field type.
Definition entity_schema_field.cpp:138
static std::string genFieldId(const std::string &id)
Generate unique field ID from name.
Definition entity_schema_field.cpp:373
static const std::vector< std::string > & defaultEntityFieldTypes()
Definition entity_schema_base_fields.cpp:197
std::string foreignKeyOnDelete() const
Get foreign key delete policy.
Definition entity_schema_field.cpp:208
static bool isValidFieldType(const std::string &type)
Check if field type is valid.
Definition entity_schema_field.cpp:368
nlohmann::json constraints() const
Get all field constraints.
Definition entity_schema_field.cpp:263
bool operator==(const EntitySchemaField &other) const
Definition entity_schema_field.cpp:33
EntitySchemaField & updateWith(const nlohmann::json &field_schema)
Update field with new JSON data.
Definition entity_schema_field.cpp:37
bool isPrimaryKey() const
Check if field is primary key.
Definition entity_schema_field.cpp:162
bool isSystem() const
Check if field is system field.
Definition entity_schema_field.cpp:171
bool isUnique() const
Check if field has unique constraint.
Definition entity_schema_field.cpp:180
static const nlohmann::json & defaultConstraints()
Get default constraints JSON.
Definition entity_schema_field.cpp:377
bool isForeignKey() const
Check if field is a foreign key.
Definition entity_schema_field.cpp:189
EntitySchemaField & setIsPrimaryKey(bool pk)
Set primary key flag (fluent interface).
Definition entity_schema_field.cpp:166
std::string id() const
Get field unique identifier.
Definition entity_schema_field.cpp:122
bool required() const
Check if field is required.
Definition entity_schema_field.cpp:153
EntitySchemaField & setName(const std::string &name)
Set field name (fluent interface).
Definition entity_schema_field.cpp:130
static const std::vector< std::string > & defaultBaseFields()
Definition entity_schema_base_fields.cpp:185
soci::db_type toSociType() const
Convert field type to SOCI database type.
Definition entity_schema_field.cpp:322
std::string foreignKeyOnUpdate() const
Get foreign key update policy.
Definition entity_schema_field.cpp:204
EntitySchemaField & setRequired(bool required)
Set required flag (fluent interface).
Definition entity_schema_field.cpp:157
std::optional< std::string > validate() const
Validate field definition.
Definition entity_schema_field.cpp:362
EntitySchemaField & setForeignKey(const std::string &table, const std::string &column="id", const std::string &onUpdate="RESTRICT", const std::string &onDelete="RESTRICT")
Set foreign key reference (fluent interface).
Definition entity_schema_field.cpp:212
EntitySchemaField & setIsUnique(bool unique)
Set unique constraint (fluent interface).
Definition entity_schema_field.cpp:184
EntitySchemaField & setConstraints(const nlohmann::json &opts)
Set field constraints (fluent interface).
Definition entity_schema_field.cpp:275
EntitySchemaField(const EntitySchemaField &other)
EntitySchemaField & setType(const std::string &type)
Set field type (fluent interface).
Definition entity_schema_field.cpp:142
router.h
Definition auth.h:15