fix User::get for users not in users_named

This commit is contained in:
Robin Appelman 2023-04-16 22:58:21 +02:00
commit 05706f2233

View file

@ -4,7 +4,7 @@ use rand::distributions::Alphanumeric;
use rand::Rng; use rand::Rng;
use reqwest::get; use reqwest::get;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use sqlx::{query, Executor, Postgres}; use sqlx::{query, query_as, Executor, Postgres};
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
pub struct User { pub struct User {
@ -13,12 +13,18 @@ pub struct User {
pub token: String, pub token: String,
} }
struct UserResult {
name: String,
token: String,
}
impl User { impl User {
pub async fn get( pub async fn get(
connection: impl Executor<'_, Database = Postgres> + Copy, connection: impl Executor<'_, Database = Postgres> + Copy,
steam_id: SteamId, steam_id: SteamId,
) -> Result<Self> { ) -> Result<Self> {
let user = query!( let mut user = query_as!(
UserResult,
r#"SELECT r#"SELECT
token as "token!", name as "name!" token as "token!", name as "name!"
FROM users_named WHERE steamid = $1"#, FROM users_named WHERE steamid = $1"#,
@ -27,6 +33,18 @@ impl User {
.fetch_optional(connection) .fetch_optional(connection)
.await?; .await?;
if user.is_none() {
user = query_as!(
UserResult,
r#"SELECT
token as "token!", name as "name!"
FROM users WHERE steamid = $1"#,
steam_id.steamid64()
)
.fetch_optional(connection)
.await?;
}
if let Some(user) = user { if let Some(user) = user {
Ok(User { Ok(User {
steam_id, steam_id,