use crate::segment::data_types::order_by::OrderBy;
use crate::segment::types::{Filter, WithPayloadInterface, WithVector};
use crate::shard::operation_rate_cost;
#[derive(Clone, Debug, PartialEq)]
pub struct QueryScrollRequestInternal {
pub limit: usize,
pub filter: Option<Filter>,
pub with_payload: WithPayloadInterface,
pub with_vector: WithVector,
pub scroll_order: ScrollOrder,
}
impl QueryScrollRequestInternal {
pub fn scroll_rate_cost(&self) -> usize {
let mut cost = operation_rate_cost::BASE_COST;
if let Some(filter) = &self.filter {
cost += operation_rate_cost::filter_rate_cost(filter);
}
cost
}
}
#[derive(Clone, Debug, Default, PartialEq)]
pub enum ScrollOrder {
#[default]
ById,
ByField(OrderBy),
Random,
}