34 lines
1.2 KiB
Rust
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)
|
|
}
|
|
}
|