diff --git a/server/src/mtx.rs b/server/src/mtx.rs index 009c0b57..9f2e5ae9 100644 --- a/server/src/mtx.rs +++ b/server/src/mtx.rs @@ -55,16 +55,17 @@ pub struct Mtx { variant: MtxVariant, } -pub fn apply(tx: &mut Transaction, variant: MtxVariant, construct_id: Uuid, account: Uuid) -> Result { - let mtx = select(tx, variant, account)?; - let construct = construct_select(tx, construct_id, account)?; +pub fn apply(tx: &mut Transaction, account: &Account, variant: MtxVariant, construct_id: Uuid) -> Result, Error> { + let mtx = select(tx, variant, account.id)?; + let construct = construct_select(tx, construct_id, account.id)?; match mtx.variant { MtxVariant::Reimage => reimage(tx, construct)?, _ => unimplemented!(), }; - return account::debit(tx, account, 1); + account::debit(tx, account.id, 1)?; + account::account_constructs(tx, account) } pub fn reimage(tx: &mut Transaction, mut construct: Construct) -> Result { diff --git a/server/src/rpc.rs b/server/src/rpc.rs index 859b7365..ee7c3798 100644 --- a/server/src/rpc.rs +++ b/server/src/rpc.rs @@ -143,7 +143,9 @@ pub fn receive(data: Vec, db: &Db, _client: &mut MnmlWs, begin: Instant, acc RpcRequest::VboxUnequip { instance_id, construct_id, target } => Ok(RpcResult::InstanceState(vbox_unequip(&mut tx, account, instance_id, construct_id, target)?)), - // "mtx_apply" => handle_mtx_apply(data, &mut tx, account), + + RpcRequest::MtxConstructApply { mtx, construct_id } => + Ok(RpcResult::AccountConstructs(mtx::apply(&mut tx, account, mtx, construct_id)?)), _ => Err(format_err!("unknown request request={:?}", request)), }; @@ -165,7 +167,6 @@ pub fn receive(data: Vec, db: &Db, _client: &mut MnmlWs, begin: Instant, acc // let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?; // match msg.params { // MtxApplyParams::ConstructApply { construct_id, mtx } => -// mtx::apply(tx, mtx, construct_id, account.id)?, // _ => unimplemented!(), // };