use lora_database::ResultFormat;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize)]
pub struct QueryRequest {
pub query: String,
#[serde(default)]
pub format: Option<QueryFormat>,
}
#[derive(Debug, Deserialize)]
pub struct PlanRequest {
pub query: String,
#[serde(default)]
pub params: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Copy, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum QueryFormat {
Rows,
RowArrays,
Graph,
Combined,
}
impl From<QueryFormat> for ResultFormat {
fn from(value: QueryFormat) -> Self {
match value {
QueryFormat::Rows => ResultFormat::Rows,
QueryFormat::RowArrays => ResultFormat::RowArrays,
QueryFormat::Graph => ResultFormat::Graph,
QueryFormat::Combined => ResultFormat::Combined,
}
}
}
#[derive(Debug, Serialize)]
pub struct HealthResponse {
pub status: &'static str,
}
#[derive(Debug, Default, Deserialize)]
#[serde(default)]
pub struct SnapshotRequest {
pub path: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct SnapshotResponse {
#[serde(rename = "formatVersion")]
pub format_version: u32,
#[serde(rename = "nodeCount")]
pub node_count: u64,
#[serde(rename = "relationshipCount")]
pub relationship_count: u64,
#[serde(rename = "walLsn")]
pub wal_lsn: Option<u64>,
pub path: String,
}
#[derive(Debug, Default, Deserialize)]
#[serde(default)]
pub struct WalTruncateRequest {
#[serde(rename = "fenceLsn")]
pub fence_lsn: Option<u64>,
}
#[derive(Debug, Serialize)]
pub struct WalStatusResponse {
#[serde(rename = "durableLsn")]
pub durable_lsn: u64,
#[serde(rename = "nextLsn")]
pub next_lsn: u64,
#[serde(rename = "activeSegmentId")]
pub active_segment_id: u64,
#[serde(rename = "oldestSegmentId")]
pub oldest_segment_id: u64,
#[serde(rename = "bgFailure")]
pub bg_failure: Option<String>,
}