chunkshop/backends/
mod.rs1use anyhow::Result;
4
5use crate::config::TargetConfig;
6
7pub mod base;
8pub mod clickhouse;
9pub mod mariadb;
10pub mod postgres;
11pub mod sqlite;
12
13pub use base::{Backend, BackendConn, BackendDialect, ColSpec};
14pub use clickhouse::ClickhouseBackend;
15pub use mariadb::MariadbBackend;
16pub use postgres::PostgresBackend;
17pub use sqlite::SQLiteBackend;
18
19pub enum AnyBackend {
25 Postgres(PostgresBackend),
26 Mariadb(MariadbBackend),
27 Sqlite(SQLiteBackend),
28 Clickhouse(ClickhouseBackend),
29}
30
31pub fn load_backend(cfg: &TargetConfig) -> Result<AnyBackend> {
32 match cfg {
33 TargetConfig::Postgres(t) => Ok(AnyBackend::Postgres(PostgresBackend::new(
34 t.dsn_env.clone(),
35 ))),
36 TargetConfig::Mariadb(t) => Ok(AnyBackend::Mariadb(MariadbBackend::new(t.dsn_env.clone()))),
37 TargetConfig::Sqlite(t) => Ok(AnyBackend::Sqlite(SQLiteBackend::new(t.dsn_env.clone()))),
38 TargetConfig::Clickhouse(t) => Ok(AnyBackend::Clickhouse(ClickhouseBackend::new(
39 t.dsn_env.clone(),
40 ))),
41 }
42}