Storm ORM Documentation
Welcome to Storm ORM - a modern C++26 ORM library using compile-time reflection to automatically map C++ structs to database tables without macros.
Supported backends: SQLite, PostgreSQL
Quick Links
Guide
Documentation for users of Storm ORM — patterns, features, and field/migration reference.
Cookbook
- Cookbook - Quick-reference patterns for common Storm ORM operations
Features
Reference
- Field Selectors - The
fields::Model.field spelling, the per-model declaration recipe, and the column/relation distinction
- Field Types - Supported C++ to SQLite/PostgreSQL type mappings
- Migrations - Atlas-based schema migrations with auto-discovered models
Internals
Documentation for Storm ORM contributors — architecture, build/test workflow, and performance/compiler internals.
Architecture
Building
- Getting Started - First-time setup, build via Docker (recommended) or from source
- Common Tasks - Adding operations, common development workflows
- Adding Features - How to add new database operations
- Pre-Commit - clang-tidy modes (
--diff / --full / --all), weekly sweep, parse-failure handling
- Formatting - clang-format and cmake-format targets, pre-commit integration, and
.clang-format settings
Testing
- Testing - Test framework, PostgreSQL test isolation, running tests
- Code Coverage - How to generate and analyze test coverage
- Sanitizers - ASAN+UBSAN and TSAN presets, what each sanitizer catches, MSAN status
- Fuzzing - libFuzzer stress testing of the runtime SQL binding and execution layer
- MSAN libc++ Fix - In-progress fix for the MSAN + import std; + GTest false positive
Performance
- Performance - Performance guidelines, hot-path tips, and benchmarking/testing workflow
- Compile Time - Where build time goes, measured; what moves it and what was rejected
- Benchmark Dashboard - Real-time TUI for storm_bench: setup, schema, backup/restore, troubleshooting
- JOIN Analysis - JOIN performance deep dive
- DISTINCT Analysis - DISTINCT performance analysis
Compiler
Open Issues
All open tasks are tracked as GitHub Issues.