diff options
| author | soryu <soryu@soryu.co> | 2026-02-04 01:07:14 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-02-04 01:07:14 +0000 |
| commit | a734bf1a472b19d63341769d26a66628575df7f4 (patch) | |
| tree | ec78f57e5721d157c620df0c99de5b5efe485231 /makima/src/server/handlers/contracts.rs | |
| parent | c732dd048128808cd9f67f6e1176a5b565df5678 (diff) | |
| download | soryu-a734bf1a472b19d63341769d26a66628575df7f4.tar.gz soryu-a734bf1a472b19d63341769d26a66628575df7f4.zip | |
Add chain checkpoint contracts
Diffstat (limited to 'makima/src/server/handlers/contracts.rs')
| -rw-r--r-- | makima/src/server/handlers/contracts.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/makima/src/server/handlers/contracts.rs b/makima/src/server/handlers/contracts.rs index 8c8cabf..54bae71 100644 --- a/makima/src/server/handlers/contracts.rs +++ b/makima/src/server/handlers/contracts.rs @@ -574,6 +574,35 @@ pub async fn update_contract( "status": &contract.status, }), ).await; + + // If contract is part of a chain, progress the chain + if let Some(chain_id) = contract.chain_id { + let pool_clone = pool.clone(); + let owner_id = auth.owner_id; + tokio::spawn(async move { + match repository::progress_chain(&pool_clone, chain_id, owner_id).await { + Ok(result) => { + if !result.contracts_created.is_empty() { + tracing::info!( + chain_id = %chain_id, + contracts_created = ?result.contracts_created, + "Chain progressed - created new contracts" + ); + } + if result.chain_completed { + tracing::info!(chain_id = %chain_id, "Chain completed"); + } + } + Err(e) => { + tracing::error!( + chain_id = %chain_id, + error = %e, + "Failed to progress chain after contract completion" + ); + } + } + }); + } } // Get summary with counts |
