Skip to main content

durable_rust/
lib.rs

1pub mod ctx;
2pub mod error;
3pub mod executor;
4
5pub use ctx::Ctx;
6pub use durable_macros::{step, workflow};
7pub use error::DurableError;
8pub use executor::Executor;
9
10use sea_orm::{ConnectOptions, Database, DatabaseConnection};
11use sea_orm_migration::MigratorTrait;
12
13/// Initialize durable: connect to Postgres and run migrations.
14///
15/// ```ignore
16/// let db = durable::init("postgres://localhost/mydb").await?;
17/// ```
18pub async fn init(database_url: &str) -> Result<DatabaseConnection, DurableError> {
19    let opt = ConnectOptions::new(database_url);
20    let db = Database::connect(opt).await?;
21
22    // Run migrations
23    durable_db::Migrator::up(&db, None).await?;
24
25    tracing::info!("durable initialized");
26    Ok(db)
27}