Skip to main content

Module postgres

Module postgres 

Source
Expand description

PostgreSQL backend implementation.

This module provides a complete PostgreSQL implementation of all storage traits. It supports connection pooling via deadpool-postgres, JSONB storage for resources, native TIMESTAMPTZ for timestamps, and PostgreSQL full-text search.

§Features

  • Connection pooling with deadpool-postgres
  • Full CRUD operations with tenant isolation
  • Version history tracking
  • Search support (string, token, date, reference, quantity, composite)
  • Full-text search using tsvector/tsquery
  • Transaction support with configurable isolation levels
  • Pessimistic locking with SELECT … FOR UPDATE

§Example

use helios_persistence::backends::postgres::{PostgresBackend, PostgresConfig};
use helios_persistence::tenant::{TenantContext, TenantId, TenantPermissions};

// Create a PostgreSQL backend
let config = PostgresConfig::default();
let backend = PostgresBackend::new(config).await?;

// Initialize the schema
backend.init_schema().await?;

// Create a tenant context
let tenant = TenantContext::new(
    TenantId::new("acme"),
    TenantPermissions::full_access(),
);

// Now you can use the backend for CRUD operations

§Schema

The PostgreSQL backend uses the following core schema:

-- Main resource table
CREATE TABLE IF NOT EXISTS resources (
    tenant_id TEXT NOT NULL,
    resource_type TEXT NOT NULL,
    id TEXT NOT NULL,
    version_id TEXT NOT NULL,
    data JSONB NOT NULL,
    last_updated TIMESTAMPTZ NOT NULL,
    is_deleted BOOLEAN NOT NULL DEFAULT FALSE,
    deleted_at TIMESTAMPTZ,
    fhir_version TEXT NOT NULL DEFAULT '4.0',
    PRIMARY KEY (tenant_id, resource_type, id)
);

-- Version history table
CREATE TABLE IF NOT EXISTS resource_history (
    tenant_id TEXT NOT NULL,
    resource_type TEXT NOT NULL,
    id TEXT NOT NULL,
    version_id TEXT NOT NULL,
    data JSONB NOT NULL,
    last_updated TIMESTAMPTZ NOT NULL,
    is_deleted BOOLEAN NOT NULL DEFAULT FALSE,
    fhir_version TEXT NOT NULL DEFAULT '4.0',
    PRIMARY KEY (tenant_id, resource_type, id, version_id)
);

Modules§

search
PostgreSQL search implementation.

Structs§

PostgresBackend
PostgreSQL backend for FHIR resource storage.
PostgresConfig
Configuration for the PostgreSQL backend.