leash-integration-slite 0.1.0

Typed Slite integration for Leash
Documentation
//! Auto-generated by leash-codegen — do not edit manually

use leash_sdk::LeashIntegrations;

/// Parameters for [`SliteClient::search_notes`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct SearchNotesParams {
    pub query: String,
    #[serde(rename = "parentNoteId")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub parentnoteid: Option<String>,
    #[serde(rename = "reviewState")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub reviewstate: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub page: Option<f64>,
    #[serde(rename = "hitsPerPage")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub hitsperpage: Option<f64>,
    #[serde(rename = "lastEditedAfter")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub lasteditedafter: Option<String>,
    #[serde(rename = "includeArchived")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub includearchived: Option<bool>,
}
/// Parameters for [`SliteClient::ask_slite`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct AskSliteParams {
    pub question: String,
    #[serde(rename = "parentNoteId")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub parentnoteid: Option<String>,
}
/// Parameters for [`SliteClient::get_note`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct GetNoteParams {
    #[serde(rename = "noteId")]
    pub noteid: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub format: Option<String>,
}
/// Parameters for [`SliteClient::get_note_children`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct GetNoteChildrenParams {
    #[serde(rename = "noteId")]
    pub noteid: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub cursor: Option<String>,
}
/// Parameters for [`SliteClient::create_note`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct CreateNoteParams {
    pub title: String,
    #[serde(rename = "parentNoteId")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub parentnoteid: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub markdown: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub html: Option<String>,
}
/// Parameters for [`SliteClient::update_note`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct UpdateNoteParams {
    #[serde(rename = "noteId")]
    pub noteid: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub title: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub markdown: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub html: Option<String>,
}

/// Typed Slite integration client for Leash.
pub struct SliteClient {
    leash: LeashIntegrations,
}

impl SliteClient {
    /// Create a new SliteClient.
    pub fn new(leash: LeashIntegrations) -> Self {
        Self { leash }
    }

    /// Searches notes in Slite based on a query and returns the top search results.
    pub async fn search_notes(&self, params: &SearchNotesParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("slite", "search-notes", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// Asks a question to Slite and returns an answer with sources.
    pub async fn ask_slite(&self, params: &AskSliteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("slite", "ask-slite", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// Retrieves a specific note from Slite by its ID.
    pub async fn get_note(&self, params: &GetNoteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("slite", "get-note", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// Retrieves all child notes of a specific note from Slite.
    pub async fn get_note_children(&self, params: &GetNoteChildrenParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("slite", "get-note-children", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// Creates a new note in Slite with the specified title and optional content.
    pub async fn create_note(&self, params: &CreateNoteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("slite", "create-note", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// Updates an existing note in Slite. Can update the title and/or content.
    pub async fn update_note(&self, params: &UpdateNoteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("slite", "update-note", Some(serde_json::to_value(params).unwrap_or_default())).await
    }
}