mailchimp/types/
list_segment_members.rs1use super::link::LinkType;
2use super::list_members::ListMember;
3use crate::api::MailchimpApi;
4use crate::iter::{BuildIter, MailchimpCollection, SimpleFilter};
5use serde::{Deserialize, Serialize};
6use std::rc::Rc;
7
8#[derive(Serialize, Deserialize, Debug, Clone)]
12pub struct CollectionListSegmentMembers {
13 #[serde(default)]
15 pub members: Vec<ListMember>,
16 #[serde(default)]
18 pub total_items: u64,
19 #[serde(default)]
21 pub _links: Vec<LinkType>,
22}
23
24impl MailchimpCollection<ListMember> for CollectionListSegmentMembers {
25 fn get_total_items(&self) -> u64 {
27 self.total_items
28 }
29
30 fn get_values(&self) -> Vec<ListMember> {
32 self.members.clone()
33 }
34}
35
36impl Default for CollectionListSegmentMembers {
37 fn default() -> Self {
38 CollectionListSegmentMembers {
39 members: Vec::new(),
40 total_items: 0,
41 _links: Vec::new(),
42 }
43 }
44}
45
46#[derive(Debug)]
50pub struct ListSegmentMembersBuilder {
51 pub endpoint: String,
53}
54
55impl BuildIter for ListSegmentMembersBuilder {
56 type Item = ListMember;
57 type FilterItem = SimpleFilter;
58 type Collection = CollectionListSegmentMembers;
59
60 fn update_item(&self, data: &Self::Item, api: Rc<MailchimpApi>) -> Self::Item {
64 let mut in_data = data.clone();
65 in_data.set_api(api);
66 in_data.set_endpoint(&self.endpoint);
67 in_data
68 }
69 fn update_filter_offset(&self, filter: &Self::FilterItem) -> Self::FilterItem {
73 let mut f = filter.clone();
74 f.offset = Some(f.count.unwrap() + f.offset.unwrap());
75 f
76 }
77}