cognite/dto/iam/
security_category.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{models::SortDirection, to_query, IntoParams, SetCursor};
4
5#[derive(Serialize, Deserialize, Debug, Clone)]
6#[serde(rename_all = "camelCase")]
7/// Create a security category.
8pub struct AddSecurityCategory {
9    /// Security category name.
10    pub name: String,
11}
12
13#[derive(Serialize, Deserialize, Debug, Clone)]
14#[serde(rename_all = "camelCase")]
15/// CDF security category.
16pub struct SecurityCategory {
17    /// Security category name.
18    pub name: String,
19    /// Internal ID.
20    pub id: u64,
21}
22
23#[derive(Debug, Default)]
24/// Filter security categories.
25pub struct SecurityCategoryQuery {
26    /// Sort security categories in ascending or descending order.
27    pub sort: Option<SortDirection>,
28    /// Cursor for pagination.
29    pub cursor: Option<String>,
30    /// Optional limit. Default is 25, maximum is 1000.
31    pub limit: Option<i32>,
32}
33
34impl IntoParams for SecurityCategoryQuery {
35    fn into_params(self) -> Vec<(String, String)> {
36        let mut params = Vec::<(String, String)>::new();
37        to_query(
38            "sort",
39            &self.sort.as_ref().map(|f| match f {
40                SortDirection::Ascending => "ASC",
41                SortDirection::Descending => "DESC",
42            }),
43            &mut params,
44        );
45        to_query("cursor", &self.cursor, &mut params);
46        to_query("limit", &self.limit, &mut params);
47        params
48    }
49}
50
51impl SetCursor for SecurityCategoryQuery {
52    fn set_cursor(&mut self, cursor: Option<String>) {
53        self.cursor = cursor;
54    }
55}