Skip to main content

Crate duroxide_pg

Crate duroxide_pg 

Source
Expand description

§Duroxide PostgreSQL Provider

A PostgreSQL-based provider implementation for Duroxide, a durable task orchestration framework for Rust.

§Usage

use duroxide_pg::PostgresProvider;
use duroxide::runtime::Runtime;
use std::sync::Arc;

// Create a provider with the database URL
let provider = PostgresProvider::new("postgres://user:password@localhost:5432/mydb").await?;

// Use with the Duroxide runtime
// let runtime = Runtime::start_with_store(Arc::new(provider), activity_registry, orchestration_registry).await;

§Custom Schema

To isolate data in a specific PostgreSQL schema (useful for multi-tenant deployments):

use duroxide_pg::PostgresProvider;

let provider = PostgresProvider::new_with_schema(
    "postgres://user:password@localhost:5432/mydb",
    Some("my_schema"),
).await?;

§Microsoft Entra ID Authentication

Connect to Azure Database for PostgreSQL Flexible Server using an Entra access token. A background task refreshes the token before expiry. See EntraAuthOptions for tunables.

use duroxide_pg::{EntraAuthOptions, PostgresProvider};

let provider = PostgresProvider::new_with_entra(
    "myserver.postgres.database.azure.com",
    5432,
    "mydb",
    "my-entra-principal@contoso.onmicrosoft.com",
    EntraAuthOptions::new(),
)
.await?;

All Entra connections use PgSslMode::VerifyFull. The default credential chain is [WorkloadIdentityCredential (added only when AKS federated env vars are present), ManagedIdentityCredential, DeveloperToolsCredential], which works for AKS Workload Identity, other Azure-hosted managed identities, and developer workstations logged in via az login.

§Configuration

Environment VariableDescriptionDefault
DUROXIDE_PG_POOL_MAXMaximum connection pool size10

§Features

  • Automatic schema migration on startup
  • Connection pooling via sqlx
  • Custom schema support for multi-tenant isolation
  • Full implementation of the Duroxide Provider and ProviderAdmin traits

Re-exports§

pub use entra::EntraAuthOptions;
pub use provider::PostgresProvider;

Modules§

entra
Microsoft Entra ID (formerly Azure Active Directory) authentication support for PostgresProvider.
migrations
provider