use chrono::{DateTime, Utc};
use serde::{Deserialize};
use crate::teams::BaseTeam;
#[derive(Clone, Debug, Deserialize)]
pub struct BaseUser {
pub id: String,
pub username: String,
}
#[derive(Clone, Debug, Deserialize)]
pub struct BaseUserWithRole {
#[serde(flatten)]
pub base: BaseUser,
pub role: String,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BaseUserWithRoleCreatedAt {
#[serde(flatten)]
pub base: BaseUserWithRole,
pub created_at: DateTime<Utc>,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct User {
#[serde(flatten)]
pub base: BaseUserWithRole,
pub is_admin: bool,
}
#[derive(Clone, Debug, Deserialize)]
pub struct UserWithTeams {
#[serde(flatten)]
pub user: User,
pub teams: Vec<BaseTeam>,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DetailedUser {
#[serde(flatten)]
pub base: BaseUserWithRoleCreatedAt,
pub logo_url: Option<String>,
pub display_name: Option<String>,
pub updated_at: DateTime<Utc>,
pub deleted_at: Option<DateTime<Utc>>,
#[serde(rename = "_count")]
pub count: Count,
}
#[derive(Clone, Debug, Deserialize)]
pub struct Count {
pub websites: u32,
}