Skip to main content

leash_integration_slite/
lib.rs

1//! Auto-generated by leash-codegen — do not edit manually
2
3use leash_sdk::LeashIntegrations;
4
5/// Parameters for [`SliteClient::search_notes`].
6#[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/// Parameters for [`SliteClient::ask_slite`].
28#[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/// Parameters for [`SliteClient::get_note`].
36#[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/// Parameters for [`SliteClient::get_note_children`].
44#[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/// Parameters for [`SliteClient::create_note`].
52#[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/// Parameters for [`SliteClient::update_note`].
64#[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
76/// Typed Slite integration client for Leash.
77pub struct SliteClient {
78    leash: LeashIntegrations,
79}
80
81impl SliteClient {
82    /// Create a new SliteClient.
83    pub fn new(leash: LeashIntegrations) -> Self {
84        Self { leash }
85    }
86
87    /// Searches notes in Slite based on a query and returns the top search results.
88    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    /// Asks a question to Slite and returns an answer with sources.
93    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    /// Retrieves a specific note from Slite by its ID.
98    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    /// Retrieves all child notes of a specific note from Slite.
103    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    /// Creates a new note in Slite with the specified title and optional content.
108    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    /// Updates an existing note in Slite. Can update the title and/or content.
113    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}