diff --git a/src/database.cpp b/src/database.cpp index 624fee4..dabbdf6 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -130,6 +130,12 @@ namespace Database { const static std::string PREPARED_STATEMENT_SELECT_FREELANCER_EMAIL_FROM_PASSWORD_RESET_KEY = "selectFreelancerEmailAddressFromPasswordResetKeys"; const static std::string SQL_STATEMENT_SELECT_FREELANCER_EMAIL_FROM_PASSWORD_RESET_KEY = "select freelanceremail from passwordresetkeys where passwordresetkey = $1;"; + /* + * Name and Statement for prepared statement to check if an reset key is expired + * returns 0 if key not expired + */ + const static std::string PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED = "checkFreelancerResetKeyExpired"; + const static std::string SQL_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED = "select count(*) from passwordresetkeys where passwordresetkey = $1 and expiration <= CURRENT_TIMESTAMP;"; /* * Statement to remove expired reset keys */ @@ -556,6 +562,21 @@ namespace Database { connection.unprepare(PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY); return result; } + + /* + * Executes the prepared statement SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED + * Takes an open pqxx::connection and the password reset key + * returns 0 if reset key is not expired + */ + pqxx::result executePreparedStatement_SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED(pqxx::connection &connection, const std::string& freelancerEmail) { + connection.prepare(PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED, SQL_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED); + pqxx::work work(connection); + pqxx::result result = work.exec_prepared(PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED, freelancerEmail); + work.commit(); + connection.unprepare(PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY_EXPIRED); + return result; + } + /* * Executes the prepared statement SELECT_FREELANCER_EMAIL_FROM_PASSWORD_RESET_KEY * Takes an open pqxx::connection and the password reset key