use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PaginatedResponse<T> {
pub count: u64,
pub next: Option<String>,
pub previous: Option<String>,
pub results: Vec<T>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GlossaryTerm {
pub name: String,
pub slug: String,
#[serde(default)]
pub definition: String,
#[serde(default)]
pub category: String,
#[serde(default)]
pub related_terms: Vec<String>,
#[serde(default)]
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlogPost {
pub title: String,
pub slug: String,
#[serde(default)]
pub excerpt: String,
#[serde(default)]
pub content: String,
#[serde(default)]
pub category: String,
#[serde(default)]
pub published_at: String,
#[serde(default)]
pub faqs: Vec<Faq>,
#[serde(default)]
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Company {
pub id: u64,
pub name: String,
#[serde(default)]
pub description: String,
#[serde(default)]
pub industry: String,
#[serde(default)]
pub certification_type: String,
pub founded_year: Option<u32>,
#[serde(default)]
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PostCategory {
pub name: String,
pub slug: String,
#[serde(default)]
pub post_count: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Faq {
pub question: String,
pub answer: String,
#[serde(default)]
pub source_type: String,
#[serde(default)]
pub source_slug: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PlatformStats {
#[serde(default)]
pub total_companies: u64,
#[serde(default)]
pub total_posts: u64,
#[serde(default)]
pub total_terms: u64,
#[serde(default)]
pub total_faqs: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SearchResultItem {
pub name: String,
pub slug: String,
#[serde(rename = "type")]
pub result_type: String,
#[serde(default)]
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SearchResponse {
pub results: Vec<SearchResultItem>,
pub query: String,
pub total: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AutocompleteItem {
pub name: String,
pub slug: String,
#[serde(rename = "type")]
pub item_type: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AutocompleteResponse {
pub suggestions: Vec<AutocompleteItem>,
pub query: String,
}