#ifndef OBELISK_MODELS_ENTITY_H #define OBELISK_MODELS_ENTITY_H #include #include namespace obelisk { /** * @brief The Entity model represents either a left or right side entity, * typically used in facts and rules. * */ class Entity { private: /** * @brief The ID of the Entity. * */ int id_; /** * @brief The name of the Entity. * */ std::string name_; public: /** * @brief Construct a new Entity object. * */ Entity() : id_(0), name_("") { } /** * @brief Construct a new Entity object. * * @param[in] id The ID of the Entity. */ Entity(int id) : id_(id), name_("") { } /** * @brief Construct a new Entity object. * * @param[in] name The name of the Entity. */ Entity(std::string name) : id_(0), name_(name) { } /** * @brief Construct a new Entity object. * * @param[in] id The ID of the Entity. * @param[in] name The name of the Entity. */ Entity(int id, std::string name) : id_(id), name_(name) { } /** * @brief Create the table in the knowledge base. * * @return const char* Returns the query used to create the table. */ static const char* createTable(); /** * @brief Get the ID of the Entity. * * @return int& Returns the ID. */ int& getId(); /** * @brief Set the ID of the Entity. * * @param[in] id The ID of the Entity. */ void setId(int id); /** * @brief Get the name of the Entity. * * @return std::string& The name of the Entity. */ std::string& getName(); /** * @brief Set the name of the Entity. * * @param[in] name The name of the Entity. */ void setName(std::string name); /** * @brief Select an Entity from the database based on the object's * ID. * * @param[in] dbConnection The database connection to use. */ void select(sqlite3* dbConnection); /** * @brief Insert an Entity into the database based on the object's * fields. * * @param[in] dbConnection The database connection to use. */ void insert(sqlite3* dbConnection); }; } // namespace obelisk #endif