diff --git a/src/database.cpp b/src/database.cpp index 83340e8..46c6f37 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -118,6 +118,12 @@ namespace Database { const static std::string PREPARED_STATEMENT_UPDATE_FREELANCER_PASSWORD_HASH = "updateFreelancerPasswordHash"; const static std::string SQL_STATEMENT_UPDATE_FREELANCER_PASSWORD_HASH = "update freelancers set hash = $1, salt = $2 where emailaddress = $3;"; + /* + * Name and Statement for prepared statement to check if an email has a reset key + */ + const static std::string PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY = "checkFreelancerResetKey"; + const static std::string SQL_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY = "select count(*) from passwordresetkeys where freelanceremail = $1;"; + /* * Statement to remove expired reset keys @@ -531,6 +537,20 @@ namespace Database { connection.unprepare(PREPARED_STATEMENT_UPDATE_FREELANCER_PASSWORD_HASH); return 0; } + + /* + * Executes the prepared statement SELECT_CHECK_FREELANCER_RESET_KEY + * Takes an open pqxx::connection and the password reset key + * returns 1 if email has reset key + */ + pqxx::result executePreparedStatement_SELECT_CHECK_FREELANCER_RESET_KEY(pqxx::connection &connection, const std::string& freelancerEmail) { + connection.prepare(PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY, SQL_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY); + pqxx::work work(connection); + pqxx::result result = work.exec_prepared(PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY, freelancerEmail); + work.commit(); + connection.unprepare(PREPARED_STATEMENT_SELECT_CHECK_FREELANCER_RESET_KEY); + return result; + } /* * parses the result and returns a JSON * Takes a result and optionally the desired row