use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use crate::model::enums::{
character::CharacterMedalStatus,
corporation::CorporationRole,
notification::{NotificationSenderType, NotificationType},
};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct Character {
pub alliance_id: Option<i64>,
pub birthday: DateTime<Utc>,
pub bloodline_id: i64,
pub corporation_id: i64,
pub description: Option<String>,
pub faction_id: Option<i64>,
pub gender: String,
pub name: String,
pub race_id: i64,
pub security_status: Option<f64>,
pub title: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterAffiliation {
pub alliance_id: Option<i64>,
pub character_id: i64,
pub corporation_id: i64,
pub faction_id: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterResearchAgent {
pub agent_id: i64,
pub points_per_day: f64,
pub remainder_points: f64,
pub skill_type_id: i64,
pub started_at: DateTime<Utc>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterCorporationHistory {
pub corporation_id: i64,
#[serde(default)]
pub is_deleted: bool,
pub record_id: i64,
pub start_date: DateTime<Utc>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterJumpFatigue {
pub jump_fatigue_expire_date: DateTime<Utc>,
pub last_jump_date: DateTime<Utc>,
pub last_update_date: DateTime<Utc>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterMedalGraphics {
pub color: i64,
pub graphic: String,
pub layer: i64,
pub part: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterMedal {
pub corporation_id: i64,
pub date: DateTime<Utc>,
pub description: String,
pub graphics: Vec<CharacterMedalGraphics>,
pub issuer_id: i64,
pub medal_id: i64,
pub reason: String,
pub status: CharacterMedalStatus,
pub title: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterNotification {
#[serde(default)]
pub is_read: bool,
pub notification_id: i64,
pub sender_id: i64,
pub sender_type: Option<NotificationSenderType>,
pub text: Option<String>,
pub timestamp: DateTime<Utc>,
pub r#type: NotificationType,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterNewContactNotification {
pub message: String,
pub notification_id: i64,
pub send_date: DateTime<Utc>,
pub sender_character_id: i64,
pub standing_level: f64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterPortraits {
pub px64x64: String,
pub px128x128: String,
pub px256x256: String,
pub px512x512: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterCorporationRole {
pub roles: Vec<CorporationRole>,
pub roles_at_base: Vec<CorporationRole>,
pub roles_at_hq: Vec<CorporationRole>,
pub roles_at_other: Vec<CorporationRole>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterCorporationTitle {
pub name: String,
pub title_id: i64,
}