use rmcp::schemars;
use rmcp::schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Serialize, JsonSchema)]
pub struct MessageResponse {
pub message: String,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct ListDatabasesResponse {
pub databases: Vec<String>,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
pub struct CreateDatabaseRequest {
pub database_name: String,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
pub struct DropDatabaseRequest {
pub database_name: String,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
pub struct ListTablesRequest {
pub database_name: String,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct ListTablesResponse {
pub tables: Vec<String>,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
pub struct GetTableSchemaRequest {
pub database_name: String,
pub table_name: String,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct TableSchemaResponse {
pub table_name: String,
pub columns: Value,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
pub struct QueryRequest {
pub query: String,
pub database_name: String,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct QueryResponse {
pub rows: Value,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
pub struct ExplainQueryRequest {
pub database_name: String,
pub query: String,
#[serde(default)]
pub analyze: bool,
}