leash_integration_slite/
lib.rs1use leash_sdk::LeashIntegrations;
4
5#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7pub struct SearchNotesParams {
8 pub query: String,
9 #[serde(rename = "parentNoteId")]
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub parentnoteid: Option<String>,
12 #[serde(rename = "reviewState")]
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub reviewstate: Option<String>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub page: Option<f64>,
17 #[serde(rename = "hitsPerPage")]
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub hitsperpage: Option<f64>,
20 #[serde(rename = "lastEditedAfter")]
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub lasteditedafter: Option<String>,
23 #[serde(rename = "includeArchived")]
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub includearchived: Option<bool>,
26}
27#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
29pub struct AskSliteParams {
30 pub question: String,
31 #[serde(rename = "parentNoteId")]
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub parentnoteid: Option<String>,
34}
35#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
37pub struct GetNoteParams {
38 #[serde(rename = "noteId")]
39 pub noteid: String,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub format: Option<String>,
42}
43#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
45pub struct GetNoteChildrenParams {
46 #[serde(rename = "noteId")]
47 pub noteid: String,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub cursor: Option<String>,
50}
51#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
53pub struct CreateNoteParams {
54 pub title: String,
55 #[serde(rename = "parentNoteId")]
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub parentnoteid: Option<String>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub markdown: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub html: Option<String>,
62}
63#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
65pub struct UpdateNoteParams {
66 #[serde(rename = "noteId")]
67 pub noteid: String,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub title: Option<String>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub markdown: Option<String>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub html: Option<String>,
74}
75
76pub struct SliteClient {
78 leash: LeashIntegrations,
79}
80
81impl SliteClient {
82 pub fn new(leash: LeashIntegrations) -> Self {
84 Self { leash }
85 }
86
87 pub async fn search_notes(&self, params: &SearchNotesParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
89 self.leash.call("slite", "search-notes", Some(serde_json::to_value(params).unwrap_or_default())).await
90 }
91
92 pub async fn ask_slite(&self, params: &AskSliteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
94 self.leash.call("slite", "ask-slite", Some(serde_json::to_value(params).unwrap_or_default())).await
95 }
96
97 pub async fn get_note(&self, params: &GetNoteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
99 self.leash.call("slite", "get-note", Some(serde_json::to_value(params).unwrap_or_default())).await
100 }
101
102 pub async fn get_note_children(&self, params: &GetNoteChildrenParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
104 self.leash.call("slite", "get-note-children", Some(serde_json::to_value(params).unwrap_or_default())).await
105 }
106
107 pub async fn create_note(&self, params: &CreateNoteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
109 self.leash.call("slite", "create-note", Some(serde_json::to_value(params).unwrap_or_default())).await
110 }
111
112 pub async fn update_note(&self, params: &UpdateNoteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
114 self.leash.call("slite", "update-note", Some(serde_json::to_value(params).unwrap_or_default())).await
115 }
116}