thinking in progress

This commit is contained in:
2019-10-10 16:38:59 +02:00
parent 77728cfdc4
commit 3a1f8ec4f6
3 changed files with 67 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ use diesel::query_dsl::RunQueryDsl;
use diesel::r2d2::{self, ConnectionManager}; use diesel::r2d2::{self, ConnectionManager};
pub mod models; pub mod models;
mod updates;
mod schema; mod schema;
/// The connection used /// The connection used

View File

@@ -20,7 +20,13 @@ pub struct Player {
pub pp: i32, pub pp: i32,
} }
/// Unpack a floating value in gold pieces to integer impl Player {
pub fn by_id(id: i32) -> Self {
}
}
/// Unpack a floating value of gold pieces to integer
/// values of copper, silver, gold and platinum pieces /// values of copper, silver, gold and platinum pieces
/// ///
/// # Note /// # Note

View File

@@ -0,0 +1,59 @@
//!
//! updates.rs
//!
//! Contains semantic mutations of database
//!
use crate::DbConnection;
use crate::models::player::Wealth;
type PlayerId = i32;
type ItemId = i32;
enum LootUpdate {
AddedItem(ItemId),
RemovedItem(Item),
GivenToPlayer(ItemId),
}
impl LootUpdate {
fn add_loot(conn: &DbConnection, to_player: PlayerId, item_desc: Item) -> Result<Self, diesel::result::Error> {
use schema::looted::dsl::*;
let new_item = models::item::NewLoot::to_player(to_player, &item_desc);
diesel::insert_into(looted)
.values(&new_item)
.execute(conn)?;
// Return newly created
let created_id = looted.select(id).order(id.desc()).first(conn)?;
Ok(LootUpdate::AddedItem(created_id))
}
fn remove_loot(conn: &DbConnection, loot_id: ItemId) -> Result<Self, diesel::result::Error> {
use schema::looted::dsl::*;
}
fn give_to_player(conn: &DbConnection, loot_id: ItemId) -> Result<Self, diesel::result::Error> {
use schema::looted::dsl::*;
}
}
impl LootUpdate {
fn undo(self, conn: &DbConnection) -> Result<(), diesel::result::Error> {
match self {
LootUpdate::AddedItem(item_id) => {
// Remove the item
},
LootUpdate::RemovedItem(item) => {
// Add the item back
},
LootUpdate::GivenToPlayer(item_id) => {
// Change owner to group
}
}
}
}
enum PlayerUpdate {
Wealth(Wealth),
ClaimItem(ItemId),
UnclaimItem(ItemId),
}