use serde::{Deserialize, Serialize};
use crate::config::validation::require_nonzero;
use crate::errors::OrionError;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct QueryConfig {
pub default_limit: u64,
pub max_limit: u64,
}
impl Default for QueryConfig {
fn default() -> Self {
Self {
default_limit: 100,
max_limit: 1000,
}
}
}
impl QueryConfig {
pub(crate) fn validate(&self) -> Result<(), OrionError> {
require_nonzero(self.default_limit, "query.default_limit")?;
require_nonzero(self.max_limit, "query.max_limit")?;
if self.default_limit > self.max_limit {
return Err(OrionError::Config {
message: format!(
"query.default_limit ({}) must not exceed query.max_limit ({})",
self.default_limit, self.max_limit
),
});
}
Ok(())
}
}