use chrono::{DateTime, Utc};
use serde::Deserialize;
use crate::deserialize::deserialize_date_time_with_zone;
#[derive(Clone, Debug, Deserialize, PartialEq)]
pub struct Guild {
pub id: u64,
pub name: String,
#[serde(
rename = "created",
deserialize_with = "deserialize_date_time_with_zone"
)]
pub created_at: DateTime<Utc>,
pub category: String,
pub website: String,
pub manager: String,
pub description: String,
pub location: Location,
#[serde(rename = "members")]
pub member_page: Option<MemberPage>,
}
#[derive(Clone, Debug, Deserialize, PartialEq)]
pub struct MemberPage {
#[serde(rename = "count")]
pub total_members: u64,
#[serde(rename = "page")]
pub page_number: u64,
#[serde(rename = "member")]
pub members: Vec<Member>,
}
#[derive(Clone, Debug, Deserialize, PartialEq)]
pub struct Member {
pub name: String,
#[serde(rename = "date", deserialize_with = "deserialize_date_time_with_zone")]
pub date_joined: DateTime<Utc>,
}
#[derive(Clone, Debug, Deserialize, PartialEq)]
pub struct Location {
#[serde(rename = "addr1")]
pub address_line_1: String,
#[serde(rename = "addr2")]
pub address_line_2: String,
pub city: String,
#[serde(rename = "stateorprovince")]
pub state: String,
pub country: String,
#[serde(rename = "postalcode")]
pub postal_code: String,
}