1use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct Page {
9 pub id: String,
10 pub title: String,
11 pub summary: Option<String>,
12 pub content: String,
13 pub entity_id: Option<String>,
14 pub domain: Option<String>,
15 pub source_memory_ids: Vec<String>,
17 pub version: i64,
18 pub status: String,
19 pub created_at: String,
20 pub last_compiled: String,
21 pub last_modified: String,
22 pub sources_updated_count: i64,
24 pub stale_reason: Option<String>,
26 pub user_edited: bool,
28 #[serde(default, skip_serializing_if = "is_zero_f32")]
31 pub relevance_score: f32,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub last_edited_by: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub last_edited_at: Option<i64>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub last_delta_summary: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub changelog: Option<String>,
40}
41
42fn is_zero_f32(v: &f32) -> bool {
43 *v == 0.0
44}