use polyte_core::{QueryBuilder, Request};
use reqwest::Client;
use url::Url;
use crate::{error::GammaError, types::Comment};
#[derive(Clone)]
pub struct Comments {
pub(crate) client: Client,
pub(crate) base_url: Url,
}
impl Comments {
pub fn list(&self) -> ListComments {
ListComments {
request: Request::new(self.client.clone(), self.base_url.clone(), "/comments"),
}
}
}
pub struct ListComments {
request: Request<Vec<Comment>, GammaError>,
}
impl ListComments {
pub fn limit(mut self, limit: u32) -> Self {
self.request = self.request.query("limit", limit);
self
}
pub fn offset(mut self, offset: u32) -> Self {
self.request = self.request.query("offset", offset);
self
}
pub fn order(mut self, order: impl Into<String>) -> Self {
self.request = self.request.query("order", order.into());
self
}
pub fn ascending(mut self, ascending: bool) -> Self {
self.request = self.request.query("ascending", ascending);
self
}
pub fn parent_entity_type(mut self, entity_type: impl Into<String>) -> Self {
self.request = self.request.query("parent_entity_type", entity_type.into());
self
}
pub fn parent_entity_id(mut self, id: i64) -> Self {
self.request = self.request.query("parent_entity_id", id);
self
}
pub fn get_positions(mut self, include: bool) -> Self {
self.request = self.request.query("get_positions", include);
self
}
pub fn holders_only(mut self, holders_only: bool) -> Self {
self.request = self.request.query("holders_only", holders_only);
self
}
pub async fn send(self) -> crate::error::Result<Vec<Comment>> {
self.request.send().await
}
}