sumup_rs/models/
member.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct User {
6 pub id: String,
7 pub email: String,
8 #[serde(default, skip_serializing_if = "Option::is_none")]
9 pub first_name: Option<String>,
10 #[serde(default, skip_serializing_if = "Option::is_none")]
11 pub last_name: Option<String>,
12 pub created_at: DateTime<Utc>,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub updated_at: Option<DateTime<Utc>>,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct Member {
19 pub id: String,
20 pub membership_id: String,
21 pub user: User,
22 pub status: String, pub roles: Vec<String>, pub permissions: Vec<String>, pub created_at: DateTime<Utc>,
26 #[serde(default, skip_serializing_if = "Option::is_none")]
27 pub updated_at: Option<DateTime<Utc>>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct CreateMemberRequest {
32 pub email: String,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub first_name: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub last_name: Option<String>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub roles: Option<Vec<String>>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct UpdateMemberRequest {
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub first_name: Option<String>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub last_name: Option<String>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub roles: Option<Vec<String>>,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct MemberListResponse {
53 pub members: Vec<Member>,
54}