mongodb_atlas_admin/api/database_users/
mod.rs

1use chrono::{DateTime, Utc};
2
3mod routes;
4pub use routes::*;
5use serde::Deserialize;
6
7#[derive(Debug, PartialEq, Deserialize)]
8pub struct DatabaseUserLabel {
9    pub key: String,
10    pub value: String,
11}
12
13#[derive(Debug, PartialEq, Deserialize)]
14#[serde(rename_all = "camelCase")]
15pub struct DatabaseUserRole {
16    pub collection_name: Option<String>,
17    pub database_name: Option<String>,
18    pub role_name: Option<String>,
19}
20
21#[derive(Debug, PartialEq, Deserialize)]
22pub struct DatabaseUserScope {
23    pub name: String,
24    #[serde(rename = "type")]
25    pub scope: String,
26}
27
28#[derive(Debug, PartialEq, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct DatabaseUserAttributes {
31    pub delete_after_date: Option<DateTime<Utc>>,
32    pub group_id: String,
33    pub labels: Vec<DatabaseUserLabel>,
34    pub roles: Vec<DatabaseUserRole>,
35    pub scopes: Vec<DatabaseUserScope>,
36}
37
38#[derive(Debug, PartialEq, Deserialize)]
39#[serde(tag = "awsIAMType")]
40pub enum DatabaseUser {
41    #[serde(rename = "USER")]
42    AwsIamUser {
43        #[serde(rename = "username")]
44        arn: String,
45        #[serde(flatten)]
46        attributes: DatabaseUserAttributes,
47    },
48    #[serde(rename = "ROLE")]
49    AwsIamRole {
50        #[serde(rename = "username")]
51        arn: String,
52        #[serde(flatten)]
53        attributes: DatabaseUserAttributes,
54    },
55    #[serde(rename = "NONE")]
56    InternalUser {
57        #[serde(rename = "databaseName")]
58        database_name: String,
59        username: String,
60        #[serde(flatten)]
61        attributes: DatabaseUserAttributes,
62    },
63}