Files
lootalot/lootalot_db/src/models.rs
2019-06-11 16:14:10 +02:00

62 lines
1.1 KiB
Rust

use crate::*;
use crate::schema::players;
#[derive(Queryable)]
pub struct Player {
id: i32,
name: String,
debt: i32,
cp: i32,
sp: i32,
gp: i32,
pp: i32,
}
#[derive(Insertable)]
#[table_name="players"]
pub struct NewPlayer<'a> {
name: &'a str,
cp: i32,
sp: i32,
gp: i32,
pp: i32,
}
impl<'a> NewPlayer<'a> {
fn new(
name: &'a str,
wealth: Option<(i32,i32,i32,i32)>,
) -> Self {
let (cp,sp,gp,pp) = wealth.unwrap_or((0,0,0,0));
NewPlayer { name, cp, sp, gp, pp }
}
fn insert(&self) -> Result<(),()> {
Err(())
}
}
#[cfg(test)]
mod tests {
use crate::tests;
use super::*;
#[test]
fn new_player_only_with_name() {
let n = NewPlayer::new("Féfi", None);
assert_eq!(n.name, "Féfi");
assert_eq!(n.cp, 0);
assert_eq!(n.sp, 0);
assert_eq!(n.gp, 0);
assert_eq!(n.pp, 0);
}
#[test]
fn new_player_with_wealth() {
let initial_wealth = (1, 2, 3, 4);
let n = NewPlayer::new("Féfi", Some(initial_wealth));
assert_eq!(initial_wealth, (n.cp, n.sp, n.gp, n.pp));
}
}