1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use serde_with::skip_serializing_none;
5
6use crate::{to_query, IntoParams};
7
8#[skip_serializing_none]
9#[derive(Serialize, Deserialize, Debug, Clone)]
10#[serde(rename_all = "camelCase")]
11pub struct Group {
13 pub id: u64,
15 pub name: String,
17 pub source_id: Option<String>,
19 pub capabilities: ::serde_json::Value,
21 pub is_deleted: bool,
23 pub deleted_time: Option<i64>,
25 pub metadata: Option<HashMap<String, String>>,
29}
30
31#[skip_serializing_none]
32#[derive(Serialize, Deserialize, Debug, Clone)]
33#[serde(rename_all = "camelCase")]
34pub struct AddGroup {
36 pub name: String,
38 pub source_id: Option<String>,
40 pub capabilities: ::serde_json::Value,
42 pub metadata: Option<HashMap<String, String>>,
46}
47
48impl From<Group> for AddGroup {
49 fn from(value: Group) -> Self {
50 Self {
51 name: value.name,
52 source_id: value.source_id,
53 capabilities: value.capabilities,
54 metadata: value.metadata,
55 }
56 }
57}
58
59#[derive(Debug, Default)]
60pub struct GroupQuery {
62 pub all: Option<bool>,
64}
65
66impl IntoParams for GroupQuery {
67 fn into_params(self) -> Vec<(String, String)> {
68 let mut params = Vec::<(String, String)>::new();
69 to_query("all", &self.all, &mut params);
70 params
71 }
72}