mongodb_atlas_admin/api/database_users/
mod.rs1use 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}