docs: add README for workspace and all 7 crates
Root README covers architecture, Rust builder API quick start, YAML pipeline quick start, provider table, deno executor overview, feature flags, and testing instructions. Per-crate READMEs follow consistent structure: one-liner, what it does, quick start code example, API reference, configuration, testing, license. Engineering-confident tone throughout.
This commit is contained in:
67
wfe-sqlite/README.md
Normal file
67
wfe-sqlite/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# wfe-sqlite
|
||||
|
||||
SQLite persistence provider for the WFE workflow engine.
|
||||
|
||||
## What it does
|
||||
|
||||
Implements the full `PersistenceProvider` trait (workflows, events, subscriptions, scheduled commands, execution errors) backed by SQLite via sqlx. Supports both in-memory and file-based databases. Tables and indexes are created automatically on startup -- no migrations to run.
|
||||
|
||||
## Quick start
|
||||
|
||||
```rust
|
||||
use wfe_sqlite::SqlitePersistenceProvider;
|
||||
|
||||
// In-memory (good for tests and single-process deployments)
|
||||
let provider = SqlitePersistenceProvider::new(":memory:").await?;
|
||||
|
||||
// File-based (persistent across restarts)
|
||||
let provider = SqlitePersistenceProvider::new("sqlite:///tmp/wfe.db").await?;
|
||||
```
|
||||
|
||||
Wire it into the WFE host as your persistence layer:
|
||||
|
||||
```rust
|
||||
let host = WorkflowHost::new(provider);
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
| Type | Trait |
|
||||
|------|-------|
|
||||
| `SqlitePersistenceProvider` | `PersistenceProvider`, `WorkflowRepository`, `EventRepository`, `SubscriptionRepository`, `ScheduledCommandRepository` |
|
||||
|
||||
Key methods come from the traits -- `create_new_workflow`, `persist_workflow`, `get_runnable_instances`, `create_event`, `schedule_command`, and so on. See `wfe-core` for the full trait definitions.
|
||||
|
||||
## Configuration
|
||||
|
||||
The constructor takes a standard SQLite connection string:
|
||||
|
||||
| Value | Behavior |
|
||||
|-------|----------|
|
||||
| `":memory:"` | In-memory database, single connection, lost on drop |
|
||||
| `"sqlite:///path/to/db"` | File-backed, WAL journal mode, up to 4 connections |
|
||||
|
||||
WAL mode and foreign keys are enabled automatically. For in-memory mode, the pool is capped at 1 connection to avoid separate database instances.
|
||||
|
||||
## Schema
|
||||
|
||||
Six tables are created in the default schema:
|
||||
|
||||
- `workflows` -- workflow instance state and metadata
|
||||
- `execution_pointers` -- step execution state, linked to workflows via foreign key
|
||||
- `events` -- published events pending processing
|
||||
- `event_subscriptions` -- active event subscriptions with CAS-style token locking
|
||||
- `scheduled_commands` -- deferred commands with dedup on `(command_name, data)`
|
||||
- `execution_errors` -- error log for failed step executions
|
||||
|
||||
## Testing
|
||||
|
||||
No external dependencies required. Tests run against `:memory:`:
|
||||
|
||||
```sh
|
||||
cargo test -p wfe-sqlite
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user