ddstats/src/database/models/map.rs

44 lines
1.0 KiB
Rust

use std::error::Error;
use chrono::NaiveDateTime;
use serde::{Deserialize, Serialize};
use tokio_postgres::Row;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Map {
map: String,
mapper: String,
category: String,
points: u8,
stars: u8,
release: Option<NaiveDateTime>,
width: u16,
height: u16,
tiles: Vec<String>,
}
impl Map {
pub fn from_db_row(db_row: &Row) -> Result<Self, Box<dyn Error>> {
let map: String = db_row.try_get(0)?;
let category: String = db_row.try_get(1)?;
let points_i16: i16 = db_row.try_get(2)?;
let points: u8 = points_i16 as u8;
let stars_i16: i16 = db_row.try_get(3)?;
let stars: u8 = stars_i16 as u8;
let mapper: String = db_row.try_get(4)?;
let release: Option<NaiveDateTime> = db_row.try_get(5)?;
Ok(Map {
map,
mapper,
category,
points,
stars,
release,
width: 1,
height: 1,
tiles: vec![],
})
}
}