#ifndef GRADIDO_LOGIN_SERVER_MODEL_TABLE_GROUPS_INCLUDE #define GRADIDO_LOGIN_SERVER_MODEL_TABLE_GROUPS_INCLUDE #include "ModelBase.h" #include "Poco/Tuple.h" namespace model { namespace table { typedef Poco::Tuple GroupTuple; class Group : public ModelBase { public: Group(); Group(const std::string& alias, const std::string& name, const std::string& url, const std::string& home, const std::string& description); Group(GroupTuple userTuple); ~Group(); // generic db operations const char* getTableName() const { return "groups"; } std::string toString(); inline const std::string& getAlias() const { return mAlias; } inline const std::string& getName() const { std::shared_lock _lock(mSharedMutex); return mName; } inline const std::string& getDescription() const { std::shared_lock _lock(mSharedMutex); return mDescription; } inline const std::string& getUrl() const { std::shared_lock _lock(mSharedMutex); return mUrl; } inline const std::string& getHome() const { SHARED_LOCK; return mHome; } inline void setName(const std::string& name) { std::unique_lock _lock(mSharedMutex); mName = name; } inline void setDescription(const std::string& desc) { std::unique_lock _lock(mSharedMutex); mDescription = desc; } inline void setUrl(const std::string& url) { std::unique_lock _lock(mSharedMutex); mUrl = url; } inline void setHome(const std::string& home) { UNIQUE_LOCK; mHome = home; } protected: Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::string& fieldName); Poco::Data::Statement _loadAllFromDB(Poco::Data::Session session); Poco::Data::Statement _loadMultipleFromDB(Poco::Data::Session session, const std::string& fieldName); Poco::Data::Statement _loadIdFromDB(Poco::Data::Session session); Poco::Data::Statement _insertIntoDB(Poco::Data::Session session); std::string mAlias; std::string mName; std::string mUrl; std::string mHome; std::string mDescription; }; } } #endif //GRADIDO_LOGIN_SERVER_MODEL_TABLE_GROUPS_INCLUDE