tidaldb/tidal/src/db/rank.rs

34 lines
1.2 KiB
Rust

//! Database entry point for exact ranking.
use super::TidalDb;
use crate::query::rank::{ExactRankRequest, ExactRankResponse, execute};
impl TidalDb {
/// Execute the frozen `contest_qualified_hot` v1 formula over a complete,
/// caller-supplied candidate set.
///
/// This method reads no database state: no configured ranking profiles,
/// candidates, items, signal ledger, or users. The explicit profile name and
/// version in the request pin formula semantics against operator config
/// changes.
/// The required `as_of_nanos` is evaluated once by the caller and remains
/// part of the request identity.
///
/// # Errors
///
/// Returns [`crate::TidalError::InvalidInput`] for an unsupported profile
/// identity, invalid timestamp/candidate/signal, duplicate entity ID,
/// arithmetic overflow, or a candidate set larger than 10,000.
#[tracing::instrument(
skip_all,
fields(
profile = %request.profile,
profile_version = request.profile_version,
candidates = request.candidates.len()
)
)]
pub fn rank_exact(&self, request: &ExactRankRequest) -> crate::Result<ExactRankResponse> {
execute(request)
}
}