diff --git a/crates/brk_cohort/src/loss.rs b/crates/brk_cohort/src/loss.rs index f9c39cd6e..ea11fda1b 100644 --- a/crates/brk_cohort/src/loss.rs +++ b/crates/brk_cohort/src/loss.rs @@ -153,6 +153,6 @@ impl Loss { .into_iter() .rev() .enumerate() - .map(move |(n, threshold)| (threshold, &ranges[len - 1 - n..])) + .map(move |(n, threshold)| (threshold, &ranges[len - 2 - n..])) } } diff --git a/crates/brk_cohort/src/profit.rs b/crates/brk_cohort/src/profit.rs index 0feae6b12..abe481743 100644 --- a/crates/brk_cohort/src/profit.rs +++ b/crates/brk_cohort/src/profit.rs @@ -208,6 +208,6 @@ impl Profit { .into_iter() .rev() .enumerate() - .map(move |(n, threshold)| (threshold, &ranges[..n + 1])) + .map(move |(n, threshold)| (threshold, &ranges[..n + 2])) } } diff --git a/crates/brk_computer/src/distribution/metrics/profitability.rs b/crates/brk_computer/src/distribution/metrics/profitability.rs index 96a879ab8..7dd79392b 100644 --- a/crates/brk_computer/src/distribution/metrics/profitability.rs +++ b/crates/brk_computer/src/distribution/metrics/profitability.rs @@ -273,7 +273,7 @@ impl ProfitabilityMetrics { ProfitabilityBucket::forced_import(db, name, version, indexes, cached_starts) })?; - let aggregate_version = version + Version::ONE; + let aggregate_version = version + Version::TWO; let profit = Profit::try_new(|name| { ProfitabilityBucket::forced_import(db, name, aggregate_version, indexes, cached_starts) diff --git a/crates/brk_server/src/api/addrs/mod.rs b/crates/brk_server/src/api/mempool_space/addrs.rs similarity index 98% rename from crates/brk_server/src/api/addrs/mod.rs rename to crates/brk_server/src/api/mempool_space/addrs.rs index bcf6c5a6e..f177d1887 100644 --- a/crates/brk_server/src/api/addrs/mod.rs +++ b/crates/brk_server/src/api/mempool_space/addrs.rs @@ -10,9 +10,7 @@ use brk_types::{ ValidateAddrParam, }; -use crate::{CacheStrategy, extended::TransformResponseExtended}; - -use super::AppState; +use crate::{AppState, CacheStrategy, extended::TransformResponseExtended}; pub trait AddrRoutes { fn add_addr_routes(self) -> Self; diff --git a/crates/brk_server/src/api/blocks/mod.rs b/crates/brk_server/src/api/mempool_space/blocks.rs similarity index 99% rename from crates/brk_server/src/api/blocks/mod.rs rename to crates/brk_server/src/api/mempool_space/blocks.rs index 150826031..5a64e00cd 100644 --- a/crates/brk_server/src/api/blocks/mod.rs +++ b/crates/brk_server/src/api/mempool_space/blocks.rs @@ -9,9 +9,7 @@ use brk_types::{ BlockTimestamp, HeightParam, TimestampParam, Transaction, TxIndex, Txid, }; -use crate::{CacheStrategy, extended::TransformResponseExtended}; - -use super::AppState; +use crate::{AppState, CacheStrategy, extended::TransformResponseExtended}; pub trait BlockRoutes { fn add_block_routes(self) -> Self; diff --git a/crates/brk_server/src/api/fees/mod.rs b/crates/brk_server/src/api/mempool_space/fees.rs similarity index 97% rename from crates/brk_server/src/api/fees/mod.rs rename to crates/brk_server/src/api/mempool_space/fees.rs index 29f98b8b0..753db7546 100644 --- a/crates/brk_server/src/api/fees/mod.rs +++ b/crates/brk_server/src/api/mempool_space/fees.rs @@ -5,9 +5,7 @@ use axum::{ }; use brk_types::{MempoolBlock, RecommendedFees}; -use crate::extended::TransformResponseExtended; - -use super::AppState; +use crate::{AppState, extended::TransformResponseExtended}; pub trait FeesRoutes { fn add_fees_routes(self) -> Self; diff --git a/crates/brk_server/src/api/general/mod.rs b/crates/brk_server/src/api/mempool_space/general.rs similarity index 94% rename from crates/brk_server/src/api/general/mod.rs rename to crates/brk_server/src/api/mempool_space/general.rs index 1fd2bbb2b..3ebe32edc 100644 --- a/crates/brk_server/src/api/general/mod.rs +++ b/crates/brk_server/src/api/mempool_space/general.rs @@ -3,13 +3,9 @@ use axum::{ extract::{Query, State}, http::{HeaderMap, Uri}, }; -use brk_types::{ - DifficultyAdjustment, HistoricalPrice, OptionalTimestampParam, Prices, Timestamp, -}; +use brk_types::{DifficultyAdjustment, HistoricalPrice, OptionalTimestampParam, Prices, Timestamp}; -use crate::{CacheStrategy, extended::TransformResponseExtended}; - -use super::AppState; +use crate::{AppState, CacheStrategy, extended::TransformResponseExtended}; pub trait GeneralRoutes { fn add_general_routes(self) -> Self; diff --git a/crates/brk_server/src/api/mempool/mod.rs b/crates/brk_server/src/api/mempool_space/mempool.rs similarity index 98% rename from crates/brk_server/src/api/mempool/mod.rs rename to crates/brk_server/src/api/mempool_space/mempool.rs index c1ebfe002..73ddacb4d 100644 --- a/crates/brk_server/src/api/mempool/mod.rs +++ b/crates/brk_server/src/api/mempool_space/mempool.rs @@ -5,9 +5,7 @@ use axum::{ }; use brk_types::{Dollars, MempoolInfo, MempoolRecentTx, Txid}; -use crate::extended::TransformResponseExtended; - -use super::AppState; +use crate::{AppState, extended::TransformResponseExtended}; pub trait MempoolRoutes { fn add_mempool_routes(self) -> Self; diff --git a/crates/brk_server/src/api/mining/mod.rs b/crates/brk_server/src/api/mempool_space/mining.rs similarity index 98% rename from crates/brk_server/src/api/mining/mod.rs rename to crates/brk_server/src/api/mempool_space/mining.rs index d73077b6a..ca8968a8f 100644 --- a/crates/brk_server/src/api/mining/mod.rs +++ b/crates/brk_server/src/api/mempool_space/mining.rs @@ -7,14 +7,11 @@ use axum::{ }; use brk_types::{ BlockCountParam, BlockFeesEntry, BlockInfoV1, BlockRewardsEntry, BlockSizesWeights, - DifficultyAdjustmentEntry, HashrateSummary, PoolDetail, - PoolHashrateEntry, PoolInfo, PoolSlugAndHeightParam, PoolSlugParam, PoolsSummary, - RewardStats, TimePeriodParam, + DifficultyAdjustmentEntry, HashrateSummary, PoolDetail, PoolHashrateEntry, PoolInfo, + PoolSlugAndHeightParam, PoolSlugParam, PoolsSummary, RewardStats, TimePeriodParam, }; -use crate::{CacheStrategy, Error, extended::TransformResponseExtended}; - -use super::AppState; +use crate::{AppState, CacheStrategy, Error, extended::TransformResponseExtended}; pub trait MiningRoutes { fn add_mining_routes(self) -> Self; diff --git a/crates/brk_server/src/api/mempool_space/mod.rs b/crates/brk_server/src/api/mempool_space/mod.rs new file mode 100644 index 000000000..df68ff1de --- /dev/null +++ b/crates/brk_server/src/api/mempool_space/mod.rs @@ -0,0 +1,35 @@ +use aide::axum::ApiRouter; + +use crate::AppState; + +mod addrs; +mod blocks; +mod fees; +mod general; +mod mempool; +mod mining; +mod transactions; + +use addrs::AddrRoutes; +use blocks::BlockRoutes; +use fees::FeesRoutes; +use general::GeneralRoutes; +use mempool::MempoolRoutes; +use mining::MiningRoutes; +use transactions::TxRoutes; + +pub trait MempoolSpaceRoutes { + fn add_mempool_space_routes(self) -> Self; +} + +impl MempoolSpaceRoutes for ApiRouter { + fn add_mempool_space_routes(self) -> Self { + self.add_general_routes() + .add_addr_routes() + .add_block_routes() + .add_mining_routes() + .add_fees_routes() + .add_mempool_routes() + .add_tx_routes() + } +} diff --git a/crates/brk_server/src/api/transactions/mod.rs b/crates/brk_server/src/api/mempool_space/transactions.rs similarity index 96% rename from crates/brk_server/src/api/transactions/mod.rs rename to crates/brk_server/src/api/mempool_space/transactions.rs index 8ba784ab5..9e21eeecb 100644 --- a/crates/brk_server/src/api/transactions/mod.rs +++ b/crates/brk_server/src/api/mempool_space/transactions.rs @@ -7,13 +7,10 @@ use axum::{ http::{HeaderMap, Uri}, }; use brk_types::{ - CpfpInfo, MerkleProof, Transaction, TxOutspend, TxStatus, Txid, TxidParam, TxidVout, - TxidsParam, + CpfpInfo, MerkleProof, Transaction, TxOutspend, TxStatus, Txid, TxidParam, TxidVout, TxidsParam, }; -use crate::{CacheStrategy, extended::TransformResponseExtended}; - -use super::AppState; +use crate::{AppState, CacheStrategy, extended::TransformResponseExtended}; pub trait TxRoutes { fn add_tx_routes(self) -> Self; @@ -26,7 +23,7 @@ impl TxRoutes for ApiRouter { "/api/v1/cpfp/{txid}", get_with( async |uri: Uri, headers: HeaderMap, Path(txid): Path, State(state): State| { - state.cached_json(&headers, CacheStrategy::MempoolHash(0), &uri, move |q| q.cpfp(txid)).await + state.cached_json(&headers, state.mempool_cache(), &uri, move |q| q.cpfp(txid)).await }, |op| op .id("get_cpfp") @@ -223,7 +220,7 @@ impl TxRoutes for ApiRouter { get_with( async |uri: Uri, headers: HeaderMap, State(state): State| { let params = TxidsParam::from_query(uri.query().unwrap_or("")); - state.cached_json(&headers, CacheStrategy::MempoolHash(0), &uri, move |q| q.transaction_times(¶ms.txids)).await + state.cached_json(&headers, state.mempool_cache(), &uri, move |q| q.transaction_times(¶ms.txids)).await }, |op| op .id("get_transaction_times") diff --git a/crates/brk_server/src/api/metrics_legacy/mod.rs b/crates/brk_server/src/api/metrics/mod.rs similarity index 100% rename from crates/brk_server/src/api/metrics_legacy/mod.rs rename to crates/brk_server/src/api/metrics/mod.rs diff --git a/crates/brk_server/src/api/mod.rs b/crates/brk_server/src/api/mod.rs index c27b94c76..9b1ac9834 100644 --- a/crates/brk_server/src/api/mod.rs +++ b/crates/brk_server/src/api/mod.rs @@ -14,26 +14,19 @@ use axum::{ use crate::{ Error, api::{ - addrs::AddrRoutes, blocks::BlockRoutes, fees::FeesRoutes, general::GeneralRoutes, - mempool::MempoolRoutes, metrics_legacy::ApiMetricsLegacyRoutes, mining::MiningRoutes, - series::ApiSeriesRoutes, server::ServerRoutes, transactions::TxRoutes, + mempool_space::MempoolSpaceRoutes, metrics::ApiMetricsLegacyRoutes, + series::ApiSeriesRoutes, server::ServerRoutes, }, extended::{ResponseExtended, TransformResponseExtended}, }; use super::AppState; -mod addrs; -mod blocks; -mod fees; -mod general; -mod mempool; -mod metrics_legacy; -mod mining; +mod mempool_space; +mod metrics; mod openapi; mod series; mod server; -mod transactions; pub use openapi::*; @@ -46,13 +39,7 @@ impl ApiRoutes for ApiRouter { self.add_server_routes() .add_series_routes() .add_metrics_legacy_routes() - .add_general_routes() - .add_addr_routes() - .add_block_routes() - .add_mining_routes() - .add_fees_routes() - .add_mempool_routes() - .add_tx_routes() + .add_mempool_space_routes() .route("/api/server", get(Redirect::temporary("/api#tag/server"))) .api_route( "/openapi.json",