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
16pub 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 durable_db::Migrator::up(&db, None).await?;
27
28 tracing::info!("durable initialized");
29 Ok(db)
30}