40 lines
1.0 KiB
Rust
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
|
|
}
|
|
}
|