Skip to main content

args_api/resource/
organization.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5use crate::resource::common::OrganizationRole;
6
7#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub struct OrganizationResource {
9    pub id: Uuid,
10    pub name: String,
11
12    pub display_name: Option<String>,
13    pub location: Option<String>,
14    pub readme: Option<String>,
15    pub links: Vec<String>,
16
17    pub created_at: DateTime<Utc>,
18    pub image_updated_at: DateTime<Utc>,
19
20    // projections
21    pub user_role: OrganizationRole,
22    pub members: Option<Vec<OrganizationMemberResource>>,
23}
24
25#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub struct OrganizationMemberResource {
27    pub id: Uuid,
28    pub user_id: Uuid,
29    pub user_name: String,
30
31    pub role: OrganizationRole,
32    pub role_description: Option<String>,
33
34    pub created_at: DateTime<Utc>,
35    pub image_updated_at: DateTime<Utc>,
36}