pub mod effector;
pub mod entities;
pub mod formatter;
pub mod llm;
pub mod migration;
pub mod plugin;
pub mod processor;
pub mod scheduler;
pub mod utils;
use anyhow::Result;
use sea_orm::{Database, DatabaseConnection};
#[derive(Clone)]
pub struct AppState {
pub db: DatabaseConnection,
}
pub use entities::{
allowed_channel, conversation, gateway, process_event, process_event_deliveries, rate_limit,
};
pub use plugin::AgentGateway;
pub async fn connect(db_path: &str) -> Result<DatabaseConnection> {
let url = if db_path == ":memory:" || db_path == "sqlite::memory:" {
"sqlite::memory:".to_string()
} else {
format!("sqlite://{}?mode=rwc", db_path)
};
let db = Database::connect(&url).await?;
Ok(db)
}
pub async fn connect_and_migrate(db_path: &str) -> Result<DatabaseConnection> {
let db = connect(db_path).await?;
run_migrations(&db).await?;
Ok(db)
}
pub async fn run_migrations(db: &DatabaseConnection) -> Result<()> {
use migration::MigratorTrait;
migration::Migrator::up(db, None).await?;
Ok(())
}