Sample Txn Executor
Txns::TakeTask {
subject,
worker,
auth_b64,
} => {
let task = task_by_subject(subject).await?;
if task.status != Status::New {
return Err(TxnErrors::TakeTaskFailed.into());
}
if let Some(worker) = task.worker {
return Err(TxnErrors::TaskInprogress(task.subject, worker).into());
}
check_account(auth_b64, *worker).await?;
let glue_ctx = new_gluedb_context().await?;
let (tappstore_ctx, ctx) =
account::deposit_for_task(tsid, base, *worker, task.required_deposit, ctx).await?;
take_task(tsid, subject, *worker, task.required_deposit).await?;
CommitContextList {
ctx_list: vec![
CommitContext::new(
ctx,
glue_ctx,
None,
None,
decode_auth_key(auth_b64)?,
txn.to_string(),
),
CommitContext::ctx_receipting(tappstore_ctx, txn.to_string()),
],
..Default::default()
}
}Other minor changes
Last updated