use serde::Serialize;
use crate::api::resource::*;
use crate::dto::core::sequences::*;
use crate::error::Result;
use crate::{IdentityList, Items, LimitCursorPartitionQuery, Patch};
pub type SequencesResource = Resource<Sequence>;
impl WithBasePath for SequencesResource {
const BASE_PATH: &'static str = "sequences";
}
impl List<LimitCursorPartitionQuery, Sequence> for SequencesResource {}
impl Create<AddSequence, Sequence> for SequencesResource {}
impl SearchItems<'_, SequenceFilter, SequenceSearch, Sequence> for SequencesResource {}
impl Update<Patch<PatchSequence>, Sequence> for SequencesResource {}
impl<R> DeleteWithIgnoreUnknownIds<IdentityList<R>> for SequencesResource
where
IdentityList<R>: Serialize,
R: Send + Sync,
{
}
impl<R> RetrieveWithIgnoreUnknownIds<IdentityList<R>, Sequence> for SequencesResource
where
IdentityList<R>: Serialize,
R: Send + Sync,
{
}
impl FilterWithRequest<SequenceFilterRequest, Sequence> for SequencesResource {}
impl SequencesResource {
pub async fn insert_rows(&self, rows: &[InsertSequenceRows]) -> Result<()> {
let items = Items::new(rows);
self.api_client
.post::<::serde_json::Value, _>(&format!("{}/{}", Self::BASE_PATH, "data"), &items)
.await?;
Ok(())
}
pub async fn retrieve_rows(
&self,
query: RetrieveSequenceRows,
) -> Result<RetrieveSequenceRowsResponse> {
self.api_client
.post(&format!("{}/{}", Self::BASE_PATH, "data/list"), &query)
.await
}
pub async fn retrieve_last_row(
&self,
query: RetrieveLastSequenceRow,
) -> Result<RetrieveSequenceRowsResponse> {
self.api_client
.post(&format!("{}/{}", Self::BASE_PATH, "data/latest"), &query)
.await
}
pub async fn delete_rows(&self, query: &[DeleteSequenceRows]) -> Result<()> {
let items = Items::new(query);
self.api_client
.post(&format!("{}/{}", Self::BASE_PATH, "data/delete"), &items)
.await
}
}