Crate oxify_storage

Crate oxify_storage 

Source
Expand description

OxiFY Storage - SQLite persistence layer

This crate provides database storage for workflows and executions using SQLite.

§Architecture Overview

§Connection Pooling Strategy

The storage layer uses sqlx::SqlitePool for connection management with the following strategy:

§Configuration

  • Max Connections: Configurable (default: 10) - Upper limit of connections in pool
  • Min Connections: Configurable (default: 2) - Minimum idle connections to maintain
  • Acquire Timeout: 30 seconds - Maximum time to wait for an available connection

§Best Practices

  1. Use WAL mode for better concurrency
  2. Keep transactions short
  3. Use pool methods, never create direct connections

Example:

let config = DatabaseConfig {
    database_url: "sqlite:oxify.db?mode=rwc".to_string(),
    max_connections: 20,
    min_connections: 5,
};
let pool = DatabasePool::new(config).await?;

Re-exports§

pub use cache::Cache;
pub use cache::CacheConfig;
pub use cache::CacheMetrics;
pub use cache::CacheStats;
pub use connection_leak_detector::ConnectionToken;
pub use connection_leak_detector::LeakDetector;
pub use connection_leak_detector::LeakDetectorConfig;
pub use connection_leak_detector::LeakReport;
pub use connection_leak_detector::LeakStats;
pub use connection_leak_detector::SuspectedLeak;
pub use health::ComponentHealth;
pub use health::HealthCheck;
pub use health::HealthCheckConfig;
pub use health::HealthReport;
pub use health::HealthStatus;
pub use maintenance::IndexBloatInfo;
pub use maintenance::MaintenanceConfig;
pub use maintenance::MaintenanceResults;
pub use maintenance::MaintenanceService;
pub use maintenance::TableStats;
pub use metrics_exporter::Metric;
pub use metrics_exporter::MetricType;
pub use metrics_exporter::MetricsExporter;
pub use metrics_exporter::MetricsFormat;
pub use migration_runner::Migration;
pub use migration_runner::MigrationRunner;
pub use migration_runner::MigrationStatus;
pub use pagination::CursorDirection;
pub use pagination::PageInfo;
pub use pagination::PaginationBuilder;
pub use pagination::PaginationRequest;
pub use pagination::PaginationResponse;
pub use pagination::PaginationStrategy;
pub use soft_delete::SoftDeleteBuilder;
pub use soft_delete::SoftDeleteFilter;
pub use soft_delete::SoftDeleteMetadata;
pub use soft_delete::SoftDeleteRestorer;

Modules§

cache
In-Memory Caching Layer
connection_leak_detector
Connection leak detection and monitoring
db_utils
Database utility functions
health
Health check system for production monitoring
maintenance
Database Maintenance Utilities for SQLite
metrics_exporter
Prometheus Metrics Exporter
migration_runner
Database Migration Runner
migrations
Database migration utilities
pagination
Pagination utilities for database queries
query_builder
SQL Query Builder Utilities
retry
Retry utilities for handling transient database errors
soft_delete
Soft delete utilities for marking records as deleted without physical removal
validation
Validation utilities for storage layer

Structs§

BulkOperationResult
Result of a bulk operation for a single item
DatabaseConfig
Database configuration
DatabasePool
Database connection pool
EncryptionService
Encryption service for secrets
ExecutionRow
Database row for executions (SQLite compatible)
ExecutionStore
Execution storage layer
ImportError
Import error for a single workflow
ImportOptions
Import options
ImportResult
Import result with statistics
PoolMetrics
Extended pool metrics for monitoring and observability
PoolStats
Pool statistics
UserPermissionRow
Database row for user permissions
UserRoleRow
Database row for user roles
UserRow
Database row for users (SQLite compatible)
UserStore
User storage operations
VersionComparison
Comparison between two workflow versions
WorkflowExport
Workflow export format
WorkflowRow
Database row for workflows (SQLite compatible) Note: tags is stored as JSON string, not array
WorkflowStore
Workflow storage layer
WorkflowVersion
Workflow version record
WorkflowVersionStore
Workflow version storage layer

Enums§

ConflictStrategy
Strategy for handling conflicts during import
PoolHealth
Pool health status
ResourceId
Resource identifier that can be a UUID, string, or other type
ResourceType
Resource type for not found errors
StorageError
Errors that can occur during storage operations

Type Aliases§

Result
Result type for storage operations