Files
artcraft-services/src/database/queries/create_session.rs
T

44 lines
1.0 KiB
Rust

use anyhow::anyhow;
use crate::AnyhowResult;
use crate::database::helpers::tokens::Tokens;
use crate::util::random_crockford_token::random_crockford_token;
use crate::util::random_prefix_crockford_token::random_prefix_crockford_token;
use log::{info, warn};
use sqlx::MySqlPool;
pub async fn create_session_for_user(user_token: &str, ip_address: &str, mysql_pool: &MySqlPool)
-> AnyhowResult<String>
{
let session_token = Tokens::new_session()?;
let query_result = sqlx::query!(
r#"
INSERT INTO user_sessions (
token,
user_token,
ip_address_creation,
expires_at
)
VALUES ( ?, ?, ?, NOW() + interval 1 year )
"#,
session_token.to_string(),
user_token.to_string(),
ip_address.to_string(),
)
.execute(mysql_pool)
.await;
let record_id = match query_result {
Ok(res) => {
res.last_insert_id()
},
Err(err) => {
return Err(anyhow!("session creation DB error: {:?}", err));
}
};
info!("Created session id: {}", record_id);
Ok(session_token)
}