Skip to main content

Module sqlite

Module sqlite 

Source
Expand description

SQLite backend implementation.

This module provides a complete SQLite implementation of all storage traits. It supports both in-memory databases (great for testing) and file-based databases (for development and small deployments).

§Features

  • In-memory and file-based modes
  • Full CRUD operations with tenant isolation
  • Version history tracking
  • Basic search support (string, token, date, reference)
  • Transaction support with ACID guarantees

§Example

use helios_persistence::backends::sqlite::SqliteBackend;
use helios_persistence::tenant::{TenantContext, TenantId, TenantPermissions};

// Create an in-memory database
let backend = SqliteBackend::in_memory()?;

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

// 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 SQLite backend uses the following schema:

-- Main resource table
CREATE TABLE resources (
    tenant_id TEXT NOT NULL,
    resource_type TEXT NOT NULL,
    id TEXT NOT NULL,
    version_id TEXT NOT NULL,
    data BLOB NOT NULL,  -- JSON data
    last_updated TEXT NOT NULL,
    is_deleted INTEGER NOT NULL DEFAULT 0,
    deleted_at TEXT,
    PRIMARY KEY (tenant_id, resource_type, id)
);

-- Version history table
CREATE TABLE resource_history (
    tenant_id TEXT NOT NULL,
    resource_type TEXT NOT NULL,
    id TEXT NOT NULL,
    version_id TEXT NOT NULL,
    data BLOB NOT NULL,
    last_updated TEXT NOT NULL,
    is_deleted INTEGER NOT NULL DEFAULT 0,
    PRIMARY KEY (tenant_id, resource_type, id, version_id)
);

Modules§

search
SQLite Search Implementation.

Structs§

SqliteBackend
SQLite backend for FHIR resource storage.
SqliteBackendConfig
Configuration for the SQLite backend.