expire key once redeemed

This commit is contained in:
Brandon Thomas committed 2024-05-15 14:59:48 -07:00
1 parent 91705499da
commit df43cb3759
3 files changed
+41 -1

No files matched your search

@@ -1,3 +1,4 @@
pub mod get_beta_key_by_value;
pub mod insert_batch_beta_keys;
pub mod list_beta_keys;
pub mod list_beta_keys;
pub mod redeem_beta_key;
@@ -0,0 +1,31 @@
use sqlx::{Executor, MySql};
use errors::AnyhowResult;
use tokens::tokens::users::UserToken;
pub async fn redeem_beta_key<'e, 'c, E>(
key_value: &'e str,
redeemer_user_token: &'e UserToken,
mysql_executor: E
)
-> AnyhowResult<()>
where E: 'e + Executor<'c, Database = MySql>
{
sqlx::query!(
r#"
UPDATE beta_keys
SET
maybe_redeemer_user_token = ?,
maybe_redeemed_at = CURRENT_TIMESTAMP
WHERE
key_value = ?
LIMIT 1
"#,
redeemer_user_token.as_str(),
key_value
)
.execute(mysql_executor)
.await?;
Ok(())
}
@@ -11,6 +11,7 @@ use enums::by_table::comments::comment_entity_type::CommentEntityType;
use enums::by_table::users::user_feature_flag::UserFeatureFlag;
use http_server_common::request::get_request_ip::get_request_ip;
use mysql_queries::queries::beta_keys::get_beta_key_by_value::get_beta_key_by_value;
use mysql_queries::queries::beta_keys::redeem_beta_key::redeem_beta_key;
use mysql_queries::queries::comments::comment_entity_token::CommentEntityToken;
use mysql_queries::queries::comments::insert_comment::{insert_comment, InsertCommentArgs};
use mysql_queries::queries::users::user::set_user_feature_flags::{set_user_feature_flags, SetUserFeatureFlagArgs};
@@ -147,6 +148,13 @@ pub async fn redeem_beta_key_handler(
RedeemBetaKeyError::ServerError
})?;
redeem_beta_key(&request.beta_key, &user_session.user_token, &server_state.mysql_pool)
.await
.map_err(|e| {
warn!("Could not redeem beta key: {:?}", e);
RedeemBetaKeyError::ServerError
})?;
let response = RedeemBetaKeySuccessResponse {
success: true,
};