use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct VerseOfTheDay {
pub reference: Option<String>,
pub text: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RandomVerse {
pub religion: Option<String>,
pub reference: Option<String>,
pub text: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CompareResult {
#[serde(flatten)]
pub data: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SearchSuggestions {
pub suggestions: Option<Vec<Suggestion>>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Suggestion {
pub text: Option<String>,
#[serde(rename = "type")]
pub suggestion_type: Option<String>,
pub religion: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TopicVerses {
pub topic: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CrossReligion {
pub topic: Option<String>,
pub title: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CalendarEvents {
pub year: Option<u32>,
pub month: Option<u32>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct CommentaryResult {
pub verse_ref: Option<String>,
pub religion: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, thiserror::Error)]
pub enum WideHolyError {
#[error("HTTP request failed: {0}")]
Http(#[from] reqwest::Error),
#[error("API error (HTTP {status}): {body}")]
Api { status: u16, body: String },
}