mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-05-19 22:34:46 -07:00
40 lines
1.2 KiB
Rust
40 lines
1.2 KiB
Rust
use super::Filter;
|
|
|
|
/// Context for cohort naming - determines whether a prefix is needed.
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
pub enum CohortContext {
|
|
/// UTXO-based cohorts: uses "utxos_" prefix for Time/Amount filters
|
|
Utxo,
|
|
/// Address-based cohorts: uses "addrs_" prefix for Amount filters
|
|
Addr,
|
|
}
|
|
|
|
impl CohortContext {
|
|
pub fn prefix(&self) -> &'static str {
|
|
match self {
|
|
CohortContext::Utxo => "utxos",
|
|
CohortContext::Addr => "addrs",
|
|
}
|
|
}
|
|
|
|
pub fn prefixed(&self, name: &str) -> String {
|
|
format!("{}_{}", self.prefix(), name)
|
|
}
|
|
|
|
/// Build full name for a filter, adding prefix only for Time/Amount filters.
|
|
///
|
|
/// Prefix rules:
|
|
/// - No prefix: `All`, `Term`, `Epoch`, `Class`, `Type`
|
|
/// - Context prefix: `Time`, `Amount`
|
|
pub fn full_name(&self, filter: &Filter, name: &str) -> String {
|
|
match filter {
|
|
Filter::All
|
|
| Filter::Term(_)
|
|
| Filter::Epoch(_)
|
|
| Filter::Class(_)
|
|
| Filter::Type(_) => name.to_string(),
|
|
Filter::Time(_) | Filter::Amount(_) => self.prefixed(name),
|
|
}
|
|
}
|
|
}
|