use std::net::IpAddr;
use serde::Deserialize;
#[derive(Debug, Clone, Default)]
pub struct LogFilter {
pub domain: Option<String>,
pub client_ip: Option<IpAddr>,
pub page_number: Option<u32>,
pub entries_per_page: Option<u32>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LogEntry {
#[serde(default)]
pub timestamp: Option<String>,
#[serde(default)]
pub client_ip: Option<IpAddr>,
#[serde(default)]
pub domain: Option<String>,
#[serde(rename = "type", default)]
pub query_type: Option<String>,
#[serde(default)]
pub response_type: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct LogQueryResponse {
pub entries: Vec<LogEntry>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LogFile {
pub file_name: String,
#[serde(default)]
pub size: Option<String>,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct LogListResponse {
pub log_files: Vec<LogFile>,
}