1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct Entity {
6 pub name: String,
7 pub entity_type: String,
8 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub embedding: Option<Vec<f32>>,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub created_at: Option<String>,
13 #[serde(default)]
14 pub mentions: u32,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct Relation {
20 pub source: String,
21 pub relationship: String,
22 pub destination: String,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub created_at: Option<String>,
25 #[serde(default)]
26 pub mentions: u32,
27 #[serde(default = "default_valid")]
28 pub valid: bool,
29}
30
31fn default_valid() -> bool {
32 true
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct GraphSearchResult {
38 pub source: String,
39 pub relationship: String,
40 pub destination: String,
41 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub score: Option<f32>,
43 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub created_at: Option<String>,
45 #[serde(default, skip_serializing_if = "Option::is_none")]
46 pub mentions: Option<u32>,
47 #[serde(default, skip_serializing_if = "Option::is_none")]
48 pub last_accessed_at: Option<String>,
49}