use std::sync::Arc;
use serde::de::DeserializeOwned;
use crate::cursor_response::HasComResult;
use crate::{CursoredRequests, CursoredResponse, HasList, Registered};
use crate::{Ready, WWClientResult, params::Parameters};
#[wwsvc_rs::async_trait]
pub trait WWSVCGetData: Sized + Clone + DeserializeOwned {
const FUNCTION: &'static str;
const VERSION: u32 = 1;
const METHOD: reqwest::Method = reqwest::Method::PUT;
const FIELDS: &'static str = "";
type Response: DeserializeOwned + HasList<Self> + HasComResult;
type Container: DeserializeOwned;
async fn get(
client: &crate::client::WebwareClient<impl Ready + Send>,
mut parameters: Parameters,
) -> WWClientResult<Self::Response> {
parameters = parameters.param("FELDER", Self::FIELDS);
client
.request_generic(
Self::METHOD,
Self::FUNCTION,
Self::VERSION,
parameters,
None,
)
.await
}
async fn get_cursored(
client: Arc<crate::client::WebwareClient<Registered>>,
mut parameters: Parameters,
max_lines: u32
) -> WWClientResult<CursoredResponse<Self, Self::Response>> {
parameters = parameters.param("FELDER", Self::FIELDS);
client.cursored_request(Self::METHOD, Self::FUNCTION, Self::VERSION, parameters, max_lines).await
}
}