modio/
teams.rs

1//! Team members interface
2use crate::prelude::*;
3use crate::types::id::{GameId, ModId};
4
5pub use crate::types::mods::{TeamLevel, TeamMember};
6
7/// Interface for the team members of a mod.
8#[derive(Clone)]
9pub struct Members {
10    modio: Modio,
11    game: GameId,
12    mod_id: ModId,
13}
14
15impl Members {
16    pub(crate) fn new(modio: Modio, game: GameId, mod_id: ModId) -> Self {
17        Self {
18            modio,
19            game,
20            mod_id,
21        }
22    }
23
24    /// Returns a `Query` interface to retrieve all team members.
25    ///
26    /// See [Filters and sorting](filters).
27    pub fn search(&self, filter: Filter) -> Query<TeamMember> {
28        let route = Route::GetModTeamMembers {
29            game_id: self.game,
30            mod_id: self.mod_id,
31        };
32        Query::new(self.modio.clone(), route, filter)
33    }
34}
35
36/// Team member filters and sorting.
37///
38/// # Filters
39/// - `Fulltext`
40/// - `Id`
41/// - `UserId`
42/// - `Username`
43/// - `Level`
44/// - `DateAdded`
45/// - `Position`
46///
47/// # Sorting
48/// - `Id`
49/// - `UserId`
50/// - `Username`
51///
52/// See [modio docs](https://docs.mod.io/restapiref/#get-mod-team-members) for more information.
53///
54/// By default this returns up to `100` items. You can limit the result by using `limit` and
55/// `offset`.
56///
57/// # Example
58/// ```
59/// use modio::filter::prelude::*;
60/// use modio::teams::filters::Id;
61///
62/// let filter = Id::_in(vec![1, 2]).order_by(Id::desc());
63/// ```
64#[rustfmt::skip]
65pub mod filters {
66    #[doc(inline)]
67    pub use crate::filter::prelude::Fulltext;
68    #[doc(inline)]
69    pub use crate::filter::prelude::Id;
70    #[doc(inline)]
71    pub use crate::filter::prelude::DateAdded;
72
73    filter!(UserId, USER_ID, "user_id", Eq, NotEq, In, Cmp, OrderBy);
74    filter!(Username, USERNAME, "username", Eq, NotEq, In, Like, OrderBy);
75    filter!(Level, LEVEL, "level", Eq, NotEq, In, Cmp, OrderBy);
76    filter!(Position, POSITION, "position", Eq, NotEq, In, Like, OrderBy);
77}