use chrono::{DateTime, Utc};
use serde::Deserialize;
use url::Url;
pub type LoginId = i64;
pub type UserId = i64;
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Login<'a> {
#[serde(rename = "ID")]
pub id: LoginId,
#[serde(borrow)]
pub provider: &'a str,
#[serde(borrow)]
pub login_name: &'a str,
#[serde(borrow, default)]
pub display_name: Option<&'a str>,
#[serde(
rename = "ProfilePicURL",
deserialize_with = "crate::util::deserialize_string_option",
default
)]
pub profile_pic_url: Option<Url>,
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct User<'a> {
#[serde(rename = "ID")]
pub id: UserId,
#[serde(borrow, default)]
pub display_name: Option<&'a str>,
#[serde(
rename = "ProfilePicURL",
deserialize_with = "crate::util::deserialize_string_option",
default
)]
pub profile_pic_url: Option<Url>,
#[serde(default)]
pub created: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UserProfile<'a> {
#[serde(rename = "ID")]
pub id: UserId,
#[serde(borrow, default)]
pub login_name: &'a str,
#[serde(borrow, default)]
pub display_name: Option<&'a str>,
#[serde(
rename = "ProfilePicURL",
deserialize_with = "crate::util::deserialize_string_option",
default
)]
pub profile_pic_url: Option<Url>,
}