ddstats/src/database/models/teamrace.rs

40 lines
1.0 KiB
Rust

use chrono::NaiveDateTime;
use serde::{Deserialize, Serialize};
use crate::database::DatabaseHandler;
#[derive(Debug, Clone, sqlx::FromRow, Serialize, Deserialize)]
pub struct Teamrace {
pub players: Vec<String>,
pub map: String,
pub time: f32,
pub timestamp: NaiveDateTime,
}
impl Teamrace {
pub async fn get_teamrace_by_player(
db: &DatabaseHandler,
player: &str,
) -> Result<Vec<Teamrace>, sqlx::Error> {
sqlx::query_as!(
Teamrace,
"SELECT players, map, time, timestamp FROM record_teamrace_array WHERE $1 = ANY(players)",
player
).fetch_all(&db.pool)
.await
}
pub async fn get_teamrace_by_map(
db: &DatabaseHandler,
map: &str,
) -> Result<Vec<Teamrace>, sqlx::Error> {
sqlx::query_as!(
Teamrace,
"SELECT players, map, time, timestamp FROM record_teamrace_array WHERE map = $1",
map
)
.fetch_all(&db.pool)
.await
}
}