use std::collections::HashMap;
use crate::msg::status::ResourceStatus;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct EntryInfo {
pub name: String,
pub size: u64,
pub record_count: u64,
pub block_count: u64,
pub oldest_record: u64,
pub latest_record: u64,
#[serde(default)]
pub status: ResourceStatus,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct QueryInfo {
pub id: u64,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct RemoveQueryInfo {
pub removed_records: u64,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct RenameEntry {
pub new_name: String,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub enum QueryType {
#[default]
#[serde(rename = "QUERY")]
Query = 0,
#[serde(rename = "REMOVE")]
Remove = 1,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct QueryEntry {
pub query_type: QueryType,
pub entries: Option<Vec<String>>,
pub start: Option<u64>,
pub stop: Option<u64>,
pub include: Option<HashMap<String, String>>,
pub exclude: Option<HashMap<String, String>>,
pub each_s: Option<f64>,
pub each_n: Option<u64>,
pub limit: Option<u64>,
pub ttl: Option<u64>,
pub only_metadata: Option<bool>,
pub continuous: Option<bool>,
pub when: Option<Value>,
pub strict: Option<bool>,
pub ext: Option<Value>,
}