use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Cooldowns {
#[serde(default)]
pub threads: u32,
#[serde(default)]
pub replies: u32,
#[serde(default)]
pub images: u32,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Board {
pub board: String,
pub title: String,
pub meta_description: String,
#[serde(default)]
pub ws_board: u8,
pub per_page: u32,
pub pages: u32,
pub max_filesize: u64,
pub max_webm_filesize: u64,
pub max_comment_chars: u32,
#[serde(default)]
pub max_webm_duration: u32,
pub bump_limit: u32,
pub image_limit: u32,
#[serde(default)]
pub cooldowns: Cooldowns,
#[serde(default)]
pub spoilers: u8,
#[serde(default)]
pub custom_spoilers: u8,
#[serde(default)]
pub is_archived: u8,
#[serde(default)]
pub country_flags: u8,
#[serde(default)]
pub user_ids: u8,
#[serde(default)]
pub oekaki: u8,
#[serde(default)]
pub sjis_tags: u8,
#[serde(default)]
pub code_tags: u8,
#[serde(default)]
pub math_tags: u8,
#[serde(default)]
pub text_only: u8,
#[serde(default)]
pub forced_anon: u8,
#[serde(default)]
pub webm_audio: u8,
#[serde(default)]
pub require_subject: u8,
#[serde(default)]
pub min_image_width: u32,
#[serde(default)]
pub min_image_height: u32,
#[serde(default)]
pub board_flags: Option<HashMap<String, String>>,
}
impl Board {
pub fn is_ws(&self) -> bool { self.ws_board == 1 }
pub fn has_archive(&self) -> bool { self.is_archived == 1 }
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub(crate) struct BoardList {
pub boards: Vec<Board>,
}