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