Skip to main content

robson_core/
lib.rs

1pub mod effector;
2pub mod entities;
3pub mod formatter;
4pub mod llm;
5pub mod migration;
6pub mod plugin;
7pub mod processor;
8pub mod scheduler;
9pub mod utils;
10
11use anyhow::Result;
12use sea_orm::{Database, DatabaseConnection};
13
14#[derive(Clone)]
15pub struct AppState {
16    pub db: DatabaseConnection,
17}
18
19// --- DB re-exports (agent entities: conversations, allowed_channels, rate_limits) ---
20
21pub use entities::{
22    allowed_channel, conversation, gateway, process_event, process_event_deliveries, rate_limit,
23};
24pub use plugin::AgentGateway;
25
26// --- DB connection helpers ---
27
28pub async fn connect(db_path: &str) -> Result<DatabaseConnection> {
29    let url = if db_path == ":memory:" || db_path == "sqlite::memory:" {
30        "sqlite::memory:".to_string()
31    } else {
32        format!("sqlite://{}?mode=rwc", db_path)
33    };
34    let db = Database::connect(&url).await?;
35    Ok(db)
36}
37
38pub async fn connect_and_migrate(db_path: &str) -> Result<DatabaseConnection> {
39    let db = connect(db_path).await?;
40    run_migrations(&db).await?;
41    Ok(db)
42}
43
44pub async fn run_migrations(db: &DatabaseConnection) -> Result<()> {
45    use migration::MigratorTrait;
46    migration::Migrator::up(db, None).await?;
47    Ok(())
48}