use serde::Deserialize;
use crate::client::Client;
use crate::error::Result;
use crate::http::{send, RequestOpts};
use crate::resources::catalog::DatastreamInfo;
use crate::timestamp::{Nanos, Timestamp};
#[derive(Debug, Clone, Deserialize)]
pub struct AvailabilityRange {
#[serde(rename = "from")]
pub from_ns: Nanos,
#[serde(rename = "to")]
pub to_ns: Nanos,
pub rows_estimate: u64,
}
#[derive(Debug, Clone, Deserialize)]
pub struct AvailabilityResponse {
pub datastream: DatastreamInfo,
pub ranges: Vec<AvailabilityRange>,
pub updated_at: Timestamp,
}
pub struct AvailabilityResource<'a> {
pub(crate) client: &'a Client,
}
impl<'a> AvailabilityResource<'a> {
pub async fn get(&self, datastream_id: i64) -> Result<AvailabilityResponse> {
let q = [("datastream_id", datastream_id.to_string())];
send::<_, ()>(
self.client,
reqwest::Method::GET,
"/availability",
Some(&q[..]),
None,
RequestOpts::default(),
)
.await
}
}