From 53bedb579c5942efb7a44807454fa9db9d658e47 Mon Sep 17 00:00:00 2001 From: ilya Date: Thu, 4 Dec 2025 20:20:53 +0000 Subject: [PATCH 1/2] Return deadline block in the solver competition v2 API --- crates/database/src/solver_competition_v2.rs | 4 +++- crates/model/src/solver_competition_v2.rs | 3 +++ crates/orderbook/openapi.yml | 4 ++++ crates/orderbook/src/database/solver_competition_v2.rs | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/database/src/solver_competition_v2.rs b/crates/database/src/solver_competition_v2.rs index 34be8500a4..56449ef029 100644 --- a/crates/database/src/solver_competition_v2.rs +++ b/crates/database/src/solver_competition_v2.rs @@ -32,6 +32,7 @@ pub struct Auction { pub price_values: Vec, pub block: i64, pub id: i64, + pub deadline: Option, } #[derive(sqlx::FromRow)] @@ -115,7 +116,7 @@ pub async fn load_by_id( id: AuctionId, ) -> Result, sqlx::Error> { const FETCH_AUCTION: &str = r#" - SELECT id, order_uids, price_tokens, price_values, block + SELECT id, order_uids, price_tokens, price_values, block, deadline FROM competition_auctions WHERE id = $1; "#; @@ -1228,6 +1229,7 @@ mod tests { tx_hash ); assert_eq!(solver_competition.auction.id, 1); + assert_eq!(solver_competition.auction.deadline, Some(2)); assert_eq!(solver_competition.trades.len(), 1); assert_eq!(solver_competition.trades.first().unwrap().solution_uid, 0); assert_eq!(solver_competition.reference_scores.len(), 1); diff --git a/crates/model/src/solver_competition_v2.rs b/crates/model/src/solver_competition_v2.rs index 30d83f8a02..e3cf2807fb 100644 --- a/crates/model/src/solver_competition_v2.rs +++ b/crates/model/src/solver_competition_v2.rs @@ -13,6 +13,7 @@ use { pub struct Response { pub auction_id: AuctionId, pub auction_start_block: i64, + pub auction_deadline_block: Option, pub transaction_hashes: Vec, #[serde_as(as = "BTreeMap<_, HexOrDecimalU256>")] pub reference_scores: BTreeMap, @@ -73,6 +74,7 @@ mod tests { let correct = serde_json::json!({ "auctionId": 0, "auctionStartBlock": 13u64, + "auctionDeadlineBlock": 100u64, "transactionHashes": ["0x3333333333333333333333333333333333333333333333333333333333333333"], "referenceScores": { "0x2222222222222222222222222222222222222222": "0", @@ -118,6 +120,7 @@ mod tests { let orig = Response { auction_id: 0, auction_start_block: 13, + auction_deadline_block: Some(100), transaction_hashes: vec![tx], reference_scores: btreemap! { solver => U256::ZERO diff --git a/crates/orderbook/openapi.yml b/crates/orderbook/openapi.yml index a8f58c67c7..5cace671c8 100644 --- a/crates/orderbook/openapi.yml +++ b/crates/orderbook/openapi.yml @@ -1713,6 +1713,10 @@ components: auctionStartBlock: type: integer description: Block that the auction started on. + auctionDeadlineBlock: + type: integer + nullable: true + description: Block deadline by which the auction must be settled (if available). transactionHashes: type: array description: | diff --git a/crates/orderbook/src/database/solver_competition_v2.rs b/crates/orderbook/src/database/solver_competition_v2.rs index 8a38620fb4..acf48e8589 100644 --- a/crates/orderbook/src/database/solver_competition_v2.rs +++ b/crates/orderbook/src/database/solver_competition_v2.rs @@ -153,6 +153,7 @@ fn try_into_dto(value: DbResponse) -> Result Date: Thu, 4 Dec 2025 20:26:15 +0000 Subject: [PATCH 2/2] Required --- crates/database/src/solver_competition_v2.rs | 4 ++-- crates/model/src/solver_competition_v2.rs | 6 +++--- crates/orderbook/openapi.yml | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/database/src/solver_competition_v2.rs b/crates/database/src/solver_competition_v2.rs index 56449ef029..0a61cd8382 100644 --- a/crates/database/src/solver_competition_v2.rs +++ b/crates/database/src/solver_competition_v2.rs @@ -32,7 +32,7 @@ pub struct Auction { pub price_values: Vec, pub block: i64, pub id: i64, - pub deadline: Option, + pub deadline: i64, } #[derive(sqlx::FromRow)] @@ -1229,7 +1229,7 @@ mod tests { tx_hash ); assert_eq!(solver_competition.auction.id, 1); - assert_eq!(solver_competition.auction.deadline, Some(2)); + assert_eq!(solver_competition.auction.deadline, 2); assert_eq!(solver_competition.trades.len(), 1); assert_eq!(solver_competition.trades.first().unwrap().solution_uid, 0); assert_eq!(solver_competition.reference_scores.len(), 1); diff --git a/crates/model/src/solver_competition_v2.rs b/crates/model/src/solver_competition_v2.rs index e3cf2807fb..e9a0ff372a 100644 --- a/crates/model/src/solver_competition_v2.rs +++ b/crates/model/src/solver_competition_v2.rs @@ -13,7 +13,7 @@ use { pub struct Response { pub auction_id: AuctionId, pub auction_start_block: i64, - pub auction_deadline_block: Option, + pub auction_deadline_block: i64, pub transaction_hashes: Vec, #[serde_as(as = "BTreeMap<_, HexOrDecimalU256>")] pub reference_scores: BTreeMap, @@ -74,7 +74,7 @@ mod tests { let correct = serde_json::json!({ "auctionId": 0, "auctionStartBlock": 13u64, - "auctionDeadlineBlock": 100u64, + "auctionDeadlineBlock": 100, "transactionHashes": ["0x3333333333333333333333333333333333333333333333333333333333333333"], "referenceScores": { "0x2222222222222222222222222222222222222222": "0", @@ -120,7 +120,7 @@ mod tests { let orig = Response { auction_id: 0, auction_start_block: 13, - auction_deadline_block: Some(100), + auction_deadline_block: 100, transaction_hashes: vec![tx], reference_scores: btreemap! { solver => U256::ZERO diff --git a/crates/orderbook/openapi.yml b/crates/orderbook/openapi.yml index 5cace671c8..3dd2e580e0 100644 --- a/crates/orderbook/openapi.yml +++ b/crates/orderbook/openapi.yml @@ -1715,8 +1715,7 @@ components: description: Block that the auction started on. auctionDeadlineBlock: type: integer - nullable: true - description: Block deadline by which the auction must be settled (if available). + description: Block deadline by which the auction must be settled. transactionHashes: type: array description: |