userman_auth/
app.rs

1use mongodb::bson::oid::ObjectId;
2use mongodb::bson::DateTime;
3use serde::{Deserialize, Serialize};
4
5use crate::serialize_option_oid_as_string;
6use crate::role::RoleItems;
7
8pub const LOCAL_APP: &str = "local";
9
10#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
11#[serde(rename_all = "camelCase")]
12pub struct App {
13    #[serde(
14        rename(serialize = "id", deserialize = "_id"),
15        skip_serializing_if = "Option::is_none",
16        serialize_with = "serialize_option_oid_as_string"
17    )]
18    pub id: Option<ObjectId>,
19    pub name: String,
20    pub version: u64,
21    pub default_role: RoleItems,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub created_at: Option<DateTime>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub updated_at: Option<DateTime>,
26}
27
28impl Default for App {
29    fn default() -> Self {
30        Self {
31            id: None,
32            name: LOCAL_APP.to_string(),
33            version: 1,
34            default_role: RoleItems::local(),
35            created_at: None,
36            updated_at: None,
37        }
38    }
39}
40
41impl App {
42    pub fn id(&self) -> ObjectId {
43        self.id.unwrap_or_default()
44    }
45}