44 lines
1.0 KiB
Rust
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![],
|
|
})
|
|
}
|
|
}
|