Ulf Gebhardt 3e726fbe82
- changed login server database to community database
- adjusted table names in login server queries
- removed roles model code since its is unused/empty
2021-10-21 05:10:45 +02:00

90 lines
3.3 KiB
C++

#ifndef GRADIDO_LOGIN_SERVER_MODEL_TABLE_PENDING_TASKS_INCLUDE
#define GRADIDO_LOGIN_SERVER_MODEL_TABLE_PENDING_TASKS_INCLUDE
#include "ModelBase.h"
#include "Poco/Types.h"
#include <shared_mutex>
namespace model {
namespace table {
enum TaskType {
TASK_TYPE_NONE = 0,
TASK_TYPE_GROUP_CREATE = 1,
TASK_TYPE_GROUP_ADD_MEMBER = 2,
TASK_TYPE_CREATION = 10,
TASK_TYPE_TRANSFER = 11
};
typedef Poco::Tuple<int, int, Poco::Data::BLOB, Poco::DateTime, Poco::DateTime, std::string, std::string, int, int, int> PendingTaskTuple;
class PendingTask : public ModelBase
{
public:
PendingTask();
PendingTask(int userId, std::string serializedProtoRequest, TaskType type);
PendingTask(const PendingTaskTuple& tuple);
// generic db operations
const char* getTableName() const { return "login_pending_tasks"; }
std::string toString();
//! \brief update table row with current request
bool updateRequest();
bool updateFinishedAndResult();
bool updateParam();
inline int getUserId() const { SHARED_LOCK; return mUserId; }
inline const std::vector<unsigned char>& getRequest() const { SHARED_LOCK; return mRequest.content(); }
inline std::string getRequestCopy() const { SHARED_LOCK; return std::string((const char*)mRequest.content().data(), mRequest.content().size()); }
Poco::JSON::Object::Ptr getResultJson() const;
Poco::JSON::Object::Ptr getParamJson() const;
inline Poco::DateTime getCreated() const { SHARED_LOCK; return mCreated; }
inline TaskType getTaskType() const { SHARED_LOCK; return (TaskType)mTaskTypeId; }
inline const char* getTaskTypeString() const { SHARED_LOCK; return typeToString((TaskType)mTaskTypeId); }
inline int getChildPendingTaskId() const { SHARED_LOCK; return mChildPendingTaskId; }
inline int getParentPendingTaskId() const { SHARED_LOCK; return mParentPendingTaskId; }
inline void setUserId(int userId) { UNIQUE_LOCK; mUserId = userId; }
void setRequest(const std::string& serializedProto);
inline void setFinished(Poco::DateTime date) { UNIQUE_LOCK; mFinished = date; }
void setResultJson(Poco::JSON::Object::Ptr result);
void setParamJson(Poco::JSON::Object::Ptr param);
inline void setTaskType(TaskType type) { UNIQUE_LOCK; mTaskTypeId = type; }
inline void setChildPendingTaskId(int childPendingTaskId) {UNIQUE_LOCK; mChildPendingTaskId = childPendingTaskId;}
inline void setParentPendingTaskId(int parentPendingTaskId) { UNIQUE_LOCK; mParentPendingTaskId = parentPendingTaskId; }
inline bool isGradidoTransaction() { SHARED_LOCK; return isGradidoTransaction((TaskType)mTaskTypeId); }
static bool isGradidoTransaction(TaskType type);
static const char* typeToString(TaskType type);
protected:
~PendingTask();
Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::string& fieldName);
Poco::Data::Statement _loadAllFromDB(Poco::Data::Session session);
Poco::Data::Statement _loadIdFromDB(Poco::Data::Session session);
Poco::Data::Statement _insertIntoDB(Poco::Data::Session session);
int mUserId;
Poco::Data::BLOB mRequest;
Poco::DateTime mCreated;
Poco::DateTime mFinished;
std::string mResultJsonString;
std::string mParamJsonString;
int mTaskTypeId;
int mChildPendingTaskId;
int mParentPendingTaskId;
};
}
}
#endif //GRADIDO_LOGIN_SERVER_MODEL_TABLE_PENDING_TASKS_INCLUDE