Skip to main content

chartml_core/plugin/
resolver.rs

1use async_trait::async_trait;
2use serde::{Deserialize, Serialize};
3use crate::error::ChartError;
4
5/// Connection configuration resolved from a datasource slug.
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct ConnectionConfig {
8    pub provider: String,
9    pub connection_string: Option<String>,
10    pub config: std::collections::HashMap<String, serde_json::Value>,
11}
12
13/// Datasource resolver — resolves a slug to connection config.
14#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
15#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
16pub trait DatasourceResolver: Send + Sync {
17    async fn resolve(&self, slug: &str) -> Result<ConnectionConfig, ChartError>;
18}