thinking in progress
This commit is contained in:
@@ -12,6 +12,7 @@ use diesel::query_dsl::RunQueryDsl;
|
||||
use diesel::r2d2::{self, ConnectionManager};
|
||||
|
||||
pub mod models;
|
||||
mod updates;
|
||||
mod schema;
|
||||
|
||||
/// The connection used
|
||||
|
||||
@@ -20,7 +20,13 @@ pub struct Player {
|
||||
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
|
||||
///
|
||||
/// # Note
|
||||
|
||||
59
lootalot_db/src/updates.rs
Normal file
59
lootalot_db/src/updates.rs
Normal 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),
|
||||
}
|
||||
Reference in New Issue
Block a user