1use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
11#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
12pub struct Deleted {
13 pub deleted: u64,
14}
15
16#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
19#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
20pub struct Imported {
21 pub imported: u64,
22}
23
24#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
27#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
28pub struct CharactersExport {
29 pub characters: Vec<crate::Character>,
30}
31
32#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
35#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
36pub struct CombatExport {
37 pub combats: Vec<ExportedCombat>,
38 pub encounters: Vec<crate::encounter::Encounter>,
39}
40
41#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
43#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
44pub struct ExportedCombat {
45 pub id: uuid::Uuid,
46 pub log: Vec<crate::combat::LoggedEvent>,
47 pub commands: Vec<SentCommand>,
50 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub hp_synced: Option<u64>,
53}
54
55#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
57#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
58pub struct SentCommand {
59 pub id: uuid::Uuid,
60 #[serde(default, skip_serializing_if = "Option::is_none")]
61 pub sender: Option<String>,
62}
63
64#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
67#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
68pub struct MonstersExport {
69 pub monsters: Vec<crate::monster::Monster>,
70 pub spells: Vec<crate::rules_text::Entry<crate::rules_text::SpellText>>,
71 pub conditions: Vec<crate::rules_text::Entry<crate::rules_text::ConditionText>>,
72}