polyoxide_gamma/api/
comments.rs1use polyoxide_core::{HttpClient, QueryBuilder, Request};
2
3use crate::{error::GammaError, types::Comment};
4
5#[derive(Clone)]
7pub struct Comments {
8 pub(crate) http_client: HttpClient,
9}
10
11impl Comments {
12 pub fn list(&self) -> ListComments {
14 ListComments {
15 request: Request::new(self.http_client.clone(), "/comments"),
16 }
17 }
18}
19
20pub struct ListComments {
22 request: Request<Vec<Comment>, GammaError>,
23}
24
25impl ListComments {
26 pub fn limit(mut self, limit: u32) -> Self {
28 self.request = self.request.query("limit", limit);
29 self
30 }
31
32 pub fn offset(mut self, offset: u32) -> Self {
34 self.request = self.request.query("offset", offset);
35 self
36 }
37
38 pub fn order(mut self, order: impl Into<String>) -> Self {
40 self.request = self.request.query("order", order.into());
41 self
42 }
43
44 pub fn ascending(mut self, ascending: bool) -> Self {
46 self.request = self.request.query("ascending", ascending);
47 self
48 }
49
50 pub fn parent_entity_type(mut self, entity_type: impl Into<String>) -> Self {
52 self.request = self.request.query("parent_entity_type", entity_type.into());
53 self
54 }
55
56 pub fn parent_entity_id(mut self, id: i64) -> Self {
58 self.request = self.request.query("parent_entity_id", id);
59 self
60 }
61
62 pub fn get_positions(mut self, include: bool) -> Self {
64 self.request = self.request.query("get_positions", include);
65 self
66 }
67
68 pub fn holders_only(mut self, holders_only: bool) -> Self {
70 self.request = self.request.query("holders_only", holders_only);
71 self
72 }
73
74 pub async fn send(self) -> Result<Vec<Comment>, GammaError> {
76 self.request.send().await
77 }
78}