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§
- Sqlite
Backend - SQLite backend for FHIR resource storage.
- Sqlite
Backend Config - Configuration for the SQLite backend.