use chrono::{DateTime, Utc};
use serde::{Deserialize};
use crate::users::BaseUser;
#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TeamMember {
pub id: String,
pub team_id: String,
pub user_id: String,
pub role: String,
pub created_at: Option<DateTime<Utc>>,
pub updated_at: Option<DateTime<Utc>>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct TeamMemberWithUser {
#[serde(flatten)]
pub member: TeamMember,
pub user: BaseUser,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BaseTeam {
pub id: String,
pub name: String,
pub logo_url: Option<String>,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Team {
#[serde(flatten)]
pub base: BaseTeam,
pub access_code: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub deleted_at: Option<DateTime<Utc>>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct TeamWithMembers {
#[serde(flatten)]
pub team: Team,
pub members: Vec<TeamMember>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct TeamWithMembersWithUser {
#[serde(flatten)]
pub team: Team,
pub members: Vec<TeamMemberWithUser>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct TeamWithMembersCount {
#[serde(flatten)]
pub team: TeamWithMembersWithUser,
#[serde(rename = "_count")]
pub count: Count,
}
#[derive(Clone, Debug, Deserialize)]
pub struct Count {
pub websites: u32,
pub members: u32,
}