use eyre::Result;
use crate::core::indexer::NadoIndexer;
use crate::indexer;
use crate::indexer::{LeaderboardResponse, LeaderboardType, SortOrder};
use crate::serialize_utils::{WrappedU32, WrappedU64};
use crate::utils::client_error::none_error;
use crate::{build_and_call, fields_to_vars, nado_builder};
nado_builder!(
LeaderboardBuilder,
NadoIndexer,
contest_id: u32,
rank_type: LeaderboardType,
start: u64,
limit: u64,
order: SortOrder;
build_and_call!(self, query, get_leaderboard => LeaderboardResponse);
pub fn build(&self) -> Result<indexer::Query> {
fields_to_vars!(self, contest_id);
Ok(indexer::Query::Leaderboard {
contest_id: WrappedU32(contest_id),
rank_type: self.rank_type,
start: self.start.map(WrappedU64),
limit: self.limit.map(WrappedU64),
order: self.order,
})
}
);