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)); } }