thinking in progress
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
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