1use chrono::{DateTime, Utc};
2use serde::{Deserialize};
3
4use crate::users::BaseUser;
5
6#[derive(Clone, Debug, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct TeamMember {
9 pub id: String,
10 pub team_id: String,
11 pub user_id: String,
12 pub role: String,
13 pub created_at: Option<DateTime<Utc>>,
14 pub updated_at: Option<DateTime<Utc>>,
15}
16
17#[derive(Clone, Debug, Deserialize)]
18pub struct TeamMemberWithUser {
19 #[serde(flatten)]
20 pub member: TeamMember,
21 pub user: BaseUser,
22}
23
24#[derive(Clone, Debug, Deserialize)]
25#[serde(rename_all = "camelCase")]
26pub struct BaseTeam {
27 pub id: String,
28 pub name: String,
29 pub logo_url: Option<String>,
30}
31
32#[derive(Clone, Debug, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct Team {
35 #[serde(flatten)]
36 pub base: BaseTeam,
37 pub access_code: String,
38 pub created_at: DateTime<Utc>,
39 pub updated_at: DateTime<Utc>,
40 pub deleted_at: Option<DateTime<Utc>>,
41}
42
43#[derive(Clone, Debug, Deserialize)]
44pub struct TeamWithMembers {
45 #[serde(flatten)]
46 pub team: Team,
47 pub members: Vec<TeamMember>,
48}
49
50#[derive(Clone, Debug, Deserialize)]
51pub struct TeamWithMembersWithUser {
52 #[serde(flatten)]
53 pub team: Team,
54 pub members: Vec<TeamMemberWithUser>,
55}
56
57#[derive(Clone, Debug, Deserialize)]
58pub struct TeamWithMembersCount {
59 #[serde(flatten)]
60 pub team: TeamWithMembersWithUser,
61 #[serde(rename = "_count")]
62 pub count: Count,
63}
64
65#[derive(Clone, Debug, Deserialize)]
66pub struct Count {
67 pub websites: u32,
68 pub members: u32,
69}