65 lines
1.2 KiB
Rust
65 lines
1.2 KiB
Rust
use crate::schema::players;
|
|
use crate::serde_derive::Serialize;
|
|
use crate::*;
|
|
|
|
#[derive(Debug, Queryable, Serialize)]
|
|
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 super::*;
|
|
use crate::tests;
|
|
|
|
#[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));
|
|
}
|
|
}
|