Mantis App v0.1.13
Loading...
Searching...
No Matches
mantis::TableUnit Class Reference

Class to model the behaviour of a table in database. More...

#include <tables.h>

Inheritance diagram for mantis::TableUnit:
Collaboration diagram for mantis::TableUnit:

Public Member Functions

 TableUnit (std::string tableName, std::string tableId, std::string tableType="base")
 
 TableUnit (const json &schema=json::object())
 
virtual ~TableUnit () override=default
 
virtual void fetchRecord (const Request &req, Response &res, Context &ctx)
 
virtual void fetchRecords (const Request &req, Response &res, Context &ctx)
 
virtual void createRecord (const Request &req, Response &res, Context &ctx)
 
virtual void updateRecord (const Request &req, Response &res, Context &ctx)
 
virtual void deleteRecord (const Request &req, Response &res, Context &ctx)
 
virtual void authWithEmailAndPassword (const Request &req, Response &res, Context &ctx)
 
virtual void resetPassword (const Request &req, Response &res, Context &ctx)
 
virtual bool setupRoutes ()
 
void setRouteDisplayName (const std::string &routeName)
 
virtual bool hasAccess (const Request &req, Response &res, Context &ctx)
 
std::string tableName ()
 
void setTableName (const std::string &name)
 
std::string tableId ()
 
void setTableId (const std::string &id)
 
std::string tableType ()
 
void fromJson (const json &j)
 
std::vector< jsonfields () const
 
void setFields (const std::vector< json > &fields)
 
bool isSystem () const
 
void setIsSystemTable (bool isSystemTable)
 
Rule listRule ()
 
void setListRule (const Rule &rule)
 
Rule getRule ()
 
void setGetRule (const Rule &rule)
 
Rule addRule ()
 
void setAddRule (const Rule &rule)
 
Rule updateRule ()
 
void setUpdateRule (const Rule &rule)
 
Rule deleteRule ()
 
void setDeleteRule (const Rule &rule)
 
json create (const json &entity, const json &opts) override
 
std::optional< jsonread (const std::string &id, const json &opts) override
 
json update (const std::string &id, const json &entity, const json &opts) override
 
bool remove (const std::string &id, const json &opts) override
 
std::vector< jsonlist (const json &opts) override
 
std::string getColTypeFromName (const std::string &col, const std::vector< json > &fields) const
 
json parseDbRowToJson (const soci::row &row) const
 
std::optional< jsonvalidateRequestBody (const json &body) const
 
std::optional< jsonvalidateUpdateRequestBody (const json &body) const
 
bool recordExists (const std::string &id) const
 
std::optional< jsonfindFieldByKey (const std::string &key) const
 
json checkValueInColumns (const std::string &value, const std::vector< std::string > &columns) const
 
- Public Member Functions inherited from mantis::CrudInterface< json >
virtual ~CrudInterface ()=default
 

Static Public Member Functions

static bool getAuthToken (const Request &req, Response &res, Context &ctx)
 
static std::string generateTableId (const std::string &tablename)
 

Public Attributes

const std::string __class_name__ = "TableUnit"
 

Protected Attributes

std::string m_tableName
 
std::string m_tableId
 
std::string m_tableType
 
std::string m_routeName
 
bool m_isSystem = false
 
std::vector< jsonm_fields = {}
 
Rule m_listRule
 
Rule m_getRule
 
Rule m_addRule
 
Rule m_updateRule
 
Rule m_deleteRule
 

Detailed Description

Class to model the behaviour of a table in database.

This will encompass:

  • Routing for the table
  • CRUD for the API endpoints
  • Helper functions (parsing table data, validation, etc.)
  • etc.

Constructor & Destructor Documentation

◆ TableUnit() [1/2]

mantis::TableUnit::TableUnit ( std::string  tableName,
std::string  tableId,
std::string  tableType = "base" 
)
explicit

◆ TableUnit() [2/2]

mantis::TableUnit::TableUnit ( const json schema = json::object())
explicit

◆ ~TableUnit()

virtual mantis::TableUnit::~TableUnit ( )
overridevirtualdefault

Member Function Documentation

◆ addRule()

Rule mantis::TableUnit::addRule ( )

◆ authWithEmailAndPassword()

void mantis::TableUnit::authWithEmailAndPassword ( const Request req,
Response res,
Context ctx 
)
virtual

Reimplemented in mantis::SysTablesUnit.

◆ checkValueInColumns()

json mantis::TableUnit::checkValueInColumns ( const std::string &  value,
const std::vector< std::string > &  columns 
) const

◆ create()

json mantis::TableUnit::create ( const json entity,
const json opts 
)
overridevirtual

◆ createRecord()

void mantis::TableUnit::createRecord ( const Request req,
Response res,
Context ctx 
)
virtual

Reimplemented in mantis::SysTablesUnit.

◆ deleteRecord()

void mantis::TableUnit::deleteRecord ( const Request req,
Response res,
Context ctx 
)
virtual

Reimplemented in mantis::SysTablesUnit.

◆ deleteRule()

Rule mantis::TableUnit::deleteRule ( )

◆ fetchRecord()

void mantis::TableUnit::fetchRecord ( const Request req,
Response res,
Context ctx 
)
virtual

Reimplemented in mantis::SysTablesUnit.

◆ fetchRecords()

void mantis::TableUnit::fetchRecords ( const Request req,
Response res,
Context ctx 
)
virtual

Reimplemented in mantis::SysTablesUnit.

◆ fields()

std::vector< json > mantis::TableUnit::fields ( ) const

◆ findFieldByKey()

std::optional< json > mantis::TableUnit::findFieldByKey ( const std::string &  key) const

◆ fromJson()

void mantis::TableUnit::fromJson ( const json j)

◆ generateTableId()

std::string mantis::TableUnit::generateTableId ( const std::string &  tablename)
static

◆ getAuthToken()

bool mantis::TableUnit::getAuthToken ( const Request req,
Response res,
Context ctx 
)
static

◆ getColTypeFromName()

std::string mantis::TableUnit::getColTypeFromName ( const std::string &  col,
const std::vector< json > &  fields 
) const

◆ getRule()

Rule mantis::TableUnit::getRule ( )

◆ hasAccess()

bool mantis::TableUnit::hasAccess ( const Request req,
Response res,
Context ctx 
)
virtual

Reimplemented in mantis::SysTablesUnit.

◆ isSystem()

bool mantis::TableUnit::isSystem ( ) const

◆ list()

std::vector< json > mantis::TableUnit::list ( const json opts)
overridevirtual

◆ listRule()

Rule mantis::TableUnit::listRule ( )

◆ parseDbRowToJson()

json mantis::TableUnit::parseDbRowToJson ( const soci::row &  row) const

◆ read()

std::optional< json > mantis::TableUnit::read ( const std::string &  id,
const json opts 
)
overridevirtual

◆ recordExists()

bool mantis::TableUnit::recordExists ( const std::string &  id) const

◆ remove()

bool mantis::TableUnit::remove ( const std::string &  id,
const json opts 
)
overridevirtual

◆ resetPassword()

void mantis::TableUnit::resetPassword ( const Request req,
Response res,
Context ctx 
)
virtual

◆ setAddRule()

void mantis::TableUnit::setAddRule ( const Rule rule)

◆ setDeleteRule()

void mantis::TableUnit::setDeleteRule ( const Rule rule)

◆ setFields()

void mantis::TableUnit::setFields ( const std::vector< json > &  fields)

◆ setGetRule()

void mantis::TableUnit::setGetRule ( const Rule rule)

◆ setIsSystemTable()

void mantis::TableUnit::setIsSystemTable ( bool  isSystemTable)

◆ setListRule()

void mantis::TableUnit::setListRule ( const Rule rule)

◆ setRouteDisplayName()

void mantis::TableUnit::setRouteDisplayName ( const std::string &  routeName)

◆ setTableId()

void mantis::TableUnit::setTableId ( const std::string &  id)

◆ setTableName()

void mantis::TableUnit::setTableName ( const std::string &  name)

◆ setUpdateRule()

void mantis::TableUnit::setUpdateRule ( const Rule rule)

◆ setupRoutes()

bool mantis::TableUnit::setupRoutes ( )
virtual

Reimplemented in mantis::SysTablesUnit.

◆ tableId()

std::string mantis::TableUnit::tableId ( )

◆ tableName()

std::string mantis::TableUnit::tableName ( )

◆ tableType()

std::string mantis::TableUnit::tableType ( )

◆ update()

json mantis::TableUnit::update ( const std::string &  id,
const json entity,
const json opts 
)
overridevirtual

◆ updateRecord()

void mantis::TableUnit::updateRecord ( const Request req,
Response res,
Context ctx 
)
virtual

Reimplemented in mantis::SysTablesUnit.

◆ updateRule()

Rule mantis::TableUnit::updateRule ( )

◆ validateRequestBody()

std::optional< json > mantis::TableUnit::validateRequestBody ( const json body) const

◆ validateUpdateRequestBody()

std::optional< json > mantis::TableUnit::validateUpdateRequestBody ( const json body) const

Member Data Documentation

◆ __class_name__

const std::string mantis::TableUnit::__class_name__ = "TableUnit"

◆ m_addRule

Rule mantis::TableUnit::m_addRule
protected

◆ m_deleteRule

Rule mantis::TableUnit::m_deleteRule
protected

◆ m_fields

std::vector<json> mantis::TableUnit::m_fields = {}
protected

◆ m_getRule

Rule mantis::TableUnit::m_getRule
protected

◆ m_isSystem

bool mantis::TableUnit::m_isSystem = false
protected

◆ m_listRule

Rule mantis::TableUnit::m_listRule
protected

◆ m_routeName

std::string mantis::TableUnit::m_routeName
protected

◆ m_tableId

std::string mantis::TableUnit::m_tableId
protected

◆ m_tableName

std::string mantis::TableUnit::m_tableName
protected

◆ m_tableType

std::string mantis::TableUnit::m_tableType
protected

◆ m_updateRule

Rule mantis::TableUnit::m_updateRule
protected

The documentation for this class was generated from the following files: