Skip to main content

durable/
lib.rs

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