9#ifndef MANTISBASE_ENTITY_H
10#define MANTISBASE_ENTITY_H
59 [[nodiscard]] std::string
id()
const;
65 [[nodiscard]] std::string
name()
const;
71 [[nodiscard]] std::string
type()
const;
83 [[nodiscard]]
bool hasApi()
const;
90 [[nodiscard]] std::string
viewQuery()
const;
96 [[nodiscard]]
const std::vector<json> &
fields()
const;
103 [[nodiscard]] std::optional<json>
field(
const std::string& field_name)
const;
110 [[nodiscard]] std::optional<json>
hasField(
const std::string& field_name)
const;
174 [[nodiscard]] std::optional<Record>
read(
const std::string &
id,
const json &opts = json::object())
const;
183 [[nodiscard]]
Record update(
const std::string &
id,
const json &data,
const json &opts = json::object())
const;
189 void remove(
const std::string &
id)
const;
208 [[nodiscard]]
bool isEmpty()
const;
216 [[nodiscard]]
bool recordExists(
const std::string &
id)
const;
223 [[nodiscard]] std::optional<json>
findField(
const std::string &field_name)
const;
231 [[nodiscard]] std::optional<json>
queryFromCols(
const std::string &value,
232 const std::vector<std::string> &columns)
const;
235 nlohmann::json m_schema;
Access rule definition for entity permissions.
Access control rule for entity permissions.
Definition access_rules.h:31
Represents a database table/entity with schema and CRUD operations.
Definition entity.h:39
const std::vector< json > & fields() const
Get all field definitions.
Definition entity.cpp:102
Record create(const json &record, const json &opts=json::object()) const
Create a new record in the entity table.
Definition entity_crud.cpp:13
std::string viewQuery() const
Get SQL query for view type entities.
Definition entity.cpp:92
bool hasApi() const
Check if entity has API endpoints enabled.
Definition entity.cpp:88
int countRecords() const
Count total records in the entity table.
Definition entity_crud.cpp:343
bool recordExists(const std::string &id) const
Check if a record exists by ID.
Definition entity_crud.cpp:409
Records list(const json &opts=json::object()) const
List all records in the entity table.
Definition entity_crud.cpp:89
Record update(const std::string &id, const json &data, const json &opts=json::object()) const
Update an existing record by ID.
Definition entity_crud.cpp:150
std::string type() const
Get entity type ("base", "auth", or "view").
Definition entity.cpp:80
bool isSystem() const
Check if entity is a system table.
Definition entity.cpp:84
AccessRule updateRule() const
Get update access rule (for PATCH /api/v1/entities/{table}/:id).
Definition entity.cpp:135
const json & schema() const
Get complete entity schema JSON.
Definition entity.cpp:143
AccessRule addRule() const
Get create access rule (for POST /api/v1/entities/{table}).
Definition entity.cpp:131
std::optional< json > field(const std::string &field_name) const
Get field definition by name.
Definition entity.cpp:106
const json & rules() const
Get all access rules.
Definition entity.cpp:119
AccessRule getRule() const
Get read access rule (for GET /api/v1/entities/{table}/:id).
Definition entity.cpp:127
std::optional< Record > read(const std::string &id, const json &opts=json::object()) const
Read a single record by ID.
Definition entity_crud.cpp:125
std::optional< json > findField(const std::string &field_name) const
Find field definition by name (alias for field()).
Definition entity.cpp:145
AccessRule deleteRule() const
Get delete access rule (for DELETE /api/v1/entities/{table}/:id).
Definition entity.cpp:139
std::optional< json > queryFromCols(const std::string &value, const std::vector< std::string > &columns) const
Query records by searching across multiple columns.
Definition entity_crud.cpp:368
std::string id() const
Get entity unique identifier.
Definition entity.cpp:72
std::optional< json > hasField(const std::string &field_name) const
Check if field exists by name.
Definition entity.cpp:115
bool isEmpty() const
Check if entity table is empty.
Definition entity_crud.cpp:355
std::string name() const
Get entity table name.
Definition entity.cpp:76
AccessRule listRule() const
Get list access rule (for GET /api/v1/entities/{table}).
Definition entity.cpp:123
void remove(const std::string &id) const
Delete a record by ID.
Definition entity_crud.cpp:293
Custom exception class for MantisBase errors.
Convenience header that includes all MantisBase public API headers.
router.h
Definition auth.h:16
std::vector< Record > Records
Collection of database records.
Definition entity.h:21
nlohmann::json Record
Single database record as JSON object.
Definition entity.h:20
nlohmann::json json
Shorten JSON namespace.
Definition context_store.h:18
SOCI database wrapper utilities.