use std::{collections::HashMap, net::SocketAddr};
use serde_value::Value;
use crate::model::{Category, Torrent};
#[derive(Debug, Clone, serde::Deserialize, PartialEq)]
pub struct SyncData {
pub rid: i64,
pub full_update: bool,
pub torrents: Option<HashMap<String, Torrent>>,
pub torrents_removed: Option<Vec<String>>,
pub categories: Option<HashMap<String, Category>>,
pub categories_removed: Option<Vec<String>>,
pub tags: Option<Vec<String>>,
pub tags_removed: Option<Vec<String>>,
pub server_state: Option<HashMap<String, Value>>,
}
#[derive(Debug, Clone, serde::Deserialize, PartialEq)]
pub struct PeerSyncData {
pub full_update: bool,
pub peers: HashMap<SocketAddr, Peer>,
pub rid: i64,
pub show_flags: bool,
}
#[derive(Debug, Clone, serde::Deserialize, PartialEq)]
pub struct Peer {
pub client: Option<String>,
pub connection: Option<String>,
pub country: Option<String>,
pub country_code: Option<String>,
pub dl_speed: Option<u64>,
pub downloaded: Option<u64>,
pub files: Option<String>,
pub flags: Option<String>,
pub flags_desc: Option<String>,
pub ip: Option<String>,
pub port: Option<u16>,
pub progress: Option<u64>,
pub relevance: Option<u64>,
pub up_speed: Option<u64>,
pub uploaded: Option<u64>,
}