bug fixes for stage0 production version

This commit is contained in:
einhornimmond 2021-03-19 14:00:42 +01:00
parent 18d479ced6
commit d46f9d73d9
4 changed files with 40 additions and 2 deletions

View File

@ -71,11 +71,15 @@ Poco::JSON::Object* JsonGetLogin::handle(Poco::Dynamic::Var params)
em->addError(new Error("JsonGetLogin::handle", "generic exception calling userModel->getJson: "));
em->sendErrorsAsEmail();
}
// use both variants for compatibility reasons, but final version is Transactions.pending
result->set("Transaction.pending", session->getProcessingTransactionCount());
result->set("Transactions.pending", session->getProcessingTransactionCount());
auto executing = observer->getTaskCount(userModel->getEmail(), TASK_OBSERVER_SIGN_TRANSACTION);
if (executing < 0) {
executing = 0;
}
// use both variants for compatibility reasons, but final version is Transactions.executing
result->set("Transaction.executing", executing);
result->set("Transactions.executing", executing);
//printf("pending: %d\n", session->getProcessingTransactionCount());
//std::string user_string = userModel->toString();

View File

@ -54,9 +54,15 @@ namespace controller {
Poco::AutoPtr<EmailVerificationCode> EmailVerificationCode::load(int user_id, model::table::EmailOptInType type) {
auto db = new model::table::EmailOptIn();
std::vector<std::string> fields = { "user_id", "email_opt_in_type_id" };
if (db->loadFromDB(fields, user_id, (int)type) == 1) {
return Poco::AutoPtr<EmailVerificationCode>(new EmailVerificationCode(db));
std::vector<int> field_values = { user_id, (int)type };
auto results = db->loadFromDB<int, model::table::EmailOptInTuple>(fields, field_values);
if (results.size() > 0) {
db->release();
return Poco::AutoPtr<EmailVerificationCode>(new EmailVerificationCode(new model::table::EmailOptIn(results[0])));
}
/*if (db->loadFromDB(fields, user_id, (int)type) == 1) {
return Poco::AutoPtr<EmailVerificationCode>(new EmailVerificationCode(db));
}*/
db->release();
return nullptr;
}

View File

@ -90,6 +90,33 @@ namespace model {
return select;
}
Poco::Data::Statement EmailOptIn::_loadMultipleFromDB(Poco::Data::Session session, const std::vector<std::string> fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/)
{
Poco::Data::Statement select(session);
if (fieldNames.size() <= 1) {
throw Poco::NullValueException("EmailOptIn::_loadFromDB fieldNames empty or contain only one field");
}
select << "SELECT id, user_id, verification_code, email_opt_in_type_id, created, resend_count, updated FROM " << getTableName()
<< " where " << fieldNames[0] << " = ? ";
if (conditionType == MYSQL_CONDITION_AND) {
for (int i = 1; i < fieldNames.size(); i++) {
select << " AND " << fieldNames[i] << " = ? ";
}
}
else if (conditionType == MYSQL_CONDITION_OR) {
for (int i = 1; i < fieldNames.size(); i++) {
select << " OR " << fieldNames[i] << " = ? ";
}
}
else {
addError(new ParamError("EmailOptIn::_loadFromDB", "condition type not implemented", conditionType));
}
return select;
}
Poco::Data::Statement EmailOptIn::_loadFromDB(Poco::Data::Session session, const std::vector<std::string>& fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/)
{
Poco::Data::Statement select(session);

View File

@ -48,6 +48,7 @@ namespace model {
Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::string& fieldName);
Poco::Data::Statement _loadIdFromDB(Poco::Data::Session session);
Poco::Data::Statement _loadMultipleFromDB(Poco::Data::Session session, const std::string& fieldName);
Poco::Data::Statement _loadMultipleFromDB(Poco::Data::Session session, const std::vector<std::string> fieldNames, MysqlConditionType conditionType = MYSQL_CONDITION_AND);
Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::vector<std::string>& fieldNames, MysqlConditionType conditionType = MYSQL_CONDITION_AND);
Poco::Data::Statement _insertIntoDB(Poco::Data::Session session);