airy 0.1.2

Airy is an AI tool for interacting with databases.
Documentation
use std::sync::Arc;

use async_trait::async_trait;
use rmcp::{
    model::CallToolResult,
    schemars::{self, JsonSchema},
};
use serde::{Deserialize, Serialize};

use crate::error::AppResult;

pub mod mysql;
pub mod postgres;

#[derive(Serialize, Deserialize, JsonSchema)]
pub struct ExecuteQueryParams {
    #[schemars(description = "The SQL SELECT query to execute.")]
    query: String,
}

#[async_trait]
pub trait Manager {
    fn system_prompt(&self) -> &str;

    async fn get_database_schema(&self) -> AppResult<CallToolResult>;

    async fn execute_query(&self, params: ExecuteQueryParams) -> AppResult<CallToolResult>;
}

pub type ManagerArc = Arc<dyn Manager + Send + Sync>;