Expand description
Valence is a schema-driven ORM for Rust: declare typed tables with
valence_schema!, generate Model CRUD at build time, and wire storage through
Valence::builder without locking into one database.
Typed schemas and models with composable storage adapters.
§Features
- Schema DSL — fields, connections, policies, ownership, TTL, and trait mixins
(
valence_schema!,valence_trait_schema!) - Table TTL — declare
ttl: { seconds }on a schema; callValence::ensure_ttl_for_allonce at boot (ttlmodule: native Redis/Mongo, Deferred stamp + warn otherwise) - Build-time codegen — typed models from host
schemas/viavalence-codegen - Composable backends — in-memory, SQLite, IndraDB, SurrealDB, Postgres, MongoDB, Redis
- Multi-backend routing — one
DatabaseRouter; each schema picks a backend withdatabase:/DatabaseFromEngine - Host ports — secrets, actor identity, endpoints, and telemetry injected at boot
- Privacy-aware CRUD — policy and ownership hooks on generated
Modelpaths; field privacy viaPrivacyEvaluator::filter_entity_fieldsonModel::getand query rows - Queued delete —
Model::deleteauthorizes Delete on every CascadeDelete DAG node (check_dag_delete_privacy) before queueing; Read is not required.SetNull/RemoveEdgeclear under the requester via deletion-scopedmerge_record/unrelate_edge. Host workers restore the deleting actor and run schemaside_effectson physical CascadeDelete. - Query privacy —
QueryCore::execute/Model::querypost-filter rows by entity read policy and field policies - Default-deny policies — schemas without entity
policies:deny non-System actors - Query paging clamps —
MAX_QUERY_LIMIT/MAX_QUERY_OFFSETonQueryCore - Dual-key privacy bypass — bench/test only:
VALENCE_PRIVACY_BYPASS+VALENCE_PRIVACY_BYPASS_FORCE_ON(never in production; see repositorySECURITY.md) - Actor JSON policy — optional
RejectExternalSystemActoron factory builds
Enable backends with Cargo features (mem is the default). The crate README.md lists every
feature flag and environment variable. See repository SECURITY.md
for integrator wiring.
§Topologies
Valence is an in-process ORM: one host process owns Valence / DatabaseRouter.
There is no coordinator/worker daemon split.
§Embedded (one process)
Engine runs in-process (mem, sqlite, indradb, Surreal embedded). No external database
required for the canonical path.
§Remote (wire)
The host process is a client to an external database (Postgres, MongoDB, Redis, Surreal remote). Start the service, set the URL env var, then run one example process.
Runnable catalog: examples/README.md
(walkthrough ladder) and crate README.md.
§Getting started
Follow these steps in order. Each linked API page includes details for that task.
§1. Choose and wire storage
| Backend | Type | Feature | Topology | When to use |
|---|---|---|---|---|
| In-memory | InMemoryBackend | mem (default) | embedded | Local experiments; tests |
| SQLite | SqliteBackend | sqlite | embedded | Durable single-host store |
| IndraDB | IndradbBackend | indradb | embedded | Graph-oriented workloads |
| SurrealDB | SurrealEmbeddedBackend | surreal | embedded | Surreal engine in-process |
| Postgres | PostgresBackend | postgres | remote | Wire Postgres (DATABASE_URL) |
| MongoDB | MongoBackend | mongodb | remote | Wire Mongo (VALENCE_MONGODB_URI) |
| Redis | RedisBackend | redis | remote | Wire Redis (VALENCE_REDIS_URL) |
§Select a backend in the schema
A schema does not contain a backend instance. Its database: field points to a stable
DatabaseFromEngine evaluator. The evaluator combines:
- a logical name (for example
"default") that must matchValenceBuilder::add_backend, and - an engine ID exported by the selected adapter.
Define COUNTER_DB for the backend you enable:
| Backend | COUNTER_DB declaration |
|---|---|
| In-memory | Database::from_engine("default", MEM_ENGINE_ID) |
| SQLite | Database::from_engine("default", SQLITE_ENGINE_ID) |
| IndraDB | Database::from_engine("default", INDRADB_ENGINE_ID) |
| SurrealDB | Database::from_engine("default", SURREAL_ENGINE_ID) |
| Postgres | Database::from_engine("default", POSTGRES_ENGINE_ID) |
| MongoDB | Database::from_engine("default", MONGODB_ENGINE_ID) |
| Redis | Database::from_engine("default", REDIS_ENGINE_ID) |
Then use that evaluator in the same Counter schema:
use valence::{Database, DatabaseFromEngine, FieldType, valence_schema};
// Choose the engine constant for the enabled backend.
pub const COUNTER_DB: DatabaseFromEngine =
Database::from_engine("default", valence::MEM_ENGINE_ID);
valence_schema! {
Counter {
table: "counter",
version: "0.1.0",
description: "Simple counter",
database: COUNTER_DB,
fields: [
id: { r#type: FieldType::String, primary_key: true, required: true },
value: { r#type: FieldType::Integer, required: true },
],
}
}Omitting database: selects DEFAULT_IN_MEMORY ("default" +
MEM_ENGINE_ID). If that router key is absent, the current runtime falls back to its
active/default backend. Declare database: explicitly for clear behavior and for any runtime
with multiple backends.
In-memory first run:
use std::sync::Arc;
use valence::{
Database, DatabaseFromEngine, FieldType, InMemoryBackend, Valence, MEM_ENGINE_ID,
valence_schema,
};
const COUNTER_DB: DatabaseFromEngine =
Database::from_engine("default", MEM_ENGINE_ID);
valence_schema! {
Counter {
table: "counter",
version: "0.1.0",
database: COUNTER_DB,
fields: [
id: { r#type: FieldType::String, primary_key: true, required: true },
value: { r#type: FieldType::Integer, required: true },
],
}
}
let valence = Valence::builder()
.add_backend("default", Arc::new(InMemoryBackend::new()))
.build()?;
assert_eq!(valence.backend_for_table("counter")?.engine_id(), MEM_ENGINE_ID);Runnable: cargo run -p uf-valence --example quickstart --features mem
§2. Declare schemas
Schemas are the typed contracts Valence registers and (via codegen) turns into models.
use valence::{
Database, DatabaseFromEngine, FieldType, MEM_ENGINE_ID, valence_schema,
};
const COUNTER_DB: DatabaseFromEngine =
Database::from_engine("default", MEM_ENGINE_ID);
valence_schema! {
Counter {
table: "counter",
version: "0.1.0",
description: "Simple counter",
database: COUNTER_DB,
fields: [
id: { r#type: FieldType::String, primary_key: true, required: true },
value: { r#type: FieldType::Integer, required: true },
],
}
}Replace MEM_ENGINE_ID with the engine constant from the table in step 1 when the Counter
belongs on another backend.
See valence_schema! and valence_trait_schema! for the DSL field reference.
Minimal schema example: workspace examples/minimal-schema.
Macros and valence-codegen share one syn DSL parser (valence-schema-dsl), so
host schemas/*_valence_schema.rs files accept the same syntax and semantics
(including database: evaluators).
§Declare and ensure TTL
Add ttl: { seconds: N } on a table schema (create-only clock). After backends are
registered, call Valence::ensure_ttl_for_all once — it scrapes the schema registry
for every TTL table (no hand list). See the ttl module for capabilities, the reserved
ttl::EXPIRE_AT_FIELD, and Deferred/non-native warnings. Hosts wire
valence_platform::ttl_sweep::register_ttl_service so Deferred engines delete expired rows.
§3. Set up build-time codegen
Typed Model impls are generated at compile time from schema files under
schemas/ (for example widget_valence_schema.rs). Add a build dependency and a
one-line build.rs:
[dependencies]
uf-valence = { git = "https://github.com/deathbreakfast/valence", package = "uf-valence", features = ["mem"] }
[build-dependencies]
uf-valence-codegen = { git = "https://github.com/deathbreakfast/valence", package = "uf-valence-codegen" }// build.rs
fn main() {
valence_codegen::build().expect("valence codegen failed");
}Include generated models (this is what must be linked for typed CRUD and inventory):
valence::include_generated_models!();Schema files under schemas/ are scan inputs for codegen; they are not
mod-linked. End-to-end proof: workspace examples/codegen-host and
examples/product-model-host. See the
valence-codegen crate docs for custom roots via
build_with / CodegenConfig.
§4. Use generated models (CRUD)
After codegen, call Model methods with a Valence runtime:
use valence::Model;
// Widget is generated from schemas/widget_valence_schema.rs
let created = Widget::create(widget, &valence).await?;
let loaded = Widget::get(created.id(), &valence).await?;
Widget::update(created.id(), updated, &valence).await?;
Widget::delete(created.id(), &valence).await?;Product-shaped schemas and connections: examples/product-model-host.
§5. Route multiple backends
One Valence holds a heterogeneous DatabaseRouter. Schema database: evaluators
pick the router key per table.
use std::sync::Arc;
use valence::{InMemoryBackend, Valence, router_key, MEM_ENGINE_ID};
let primary = router_key("primary", MEM_ENGINE_ID);
let valence = Valence::builder()
.add_backend("primary", Arc::new(InMemoryBackend::new()))
.add_backend("archive", Arc::new(InMemoryBackend::new()))
.default_backend_key(primary)
.build()?;Runnable: cargo run -p uf-valence --example multi_backend --features mem
Heterogeneous engines (mem Project ↔ sqlite Task) with hop + query:
cargo run -p cross-backend-model-host. Walkthrough: examples/README.md.
§6. Inject host ports
Optional builder methods wire secrets, actor identity, endpoints, and telemetry:
ValenceBuilder::secret_provider, ValenceBuilder::actor_factory,
ValenceBuilder::endpoint_resolver, ValenceBuilder::telemetry_sink.
Port table and reference impls: valence_core::ports. Storage adapter contract and
third-party checklist: DatabaseBackend. Router semantics: DatabaseRouter.
use std::sync::Arc;
use valence::{
ConsoleSink, EnvSecretProvider, InMemoryBackend, JsonActorFactory, NoopEndpointResolver,
Valence,
};
let _valence = Valence::builder()
.add_backend("default", Arc::new(InMemoryBackend::new()))
.secret_provider(Arc::new(EnvSecretProvider))
.actor_factory(Arc::new(JsonActorFactory))
.endpoint_resolver(Arc::new(NoopEndpointResolver))
.telemetry_sink(Arc::new(ConsoleSink))
.build()?;§How the pieces link together
schemas/*.rs ──► build.rs (valence_codegen::build) ──► $OUT_DIR/generated_models.rs
(scan inputs) │
│ include_generated_models!
▼
impl Model + inventory submit
│
SchemaRegistry ◄────────────────┤
▼
typed CRUD on Valence
│
Valence runtime ◄── DatabaseRouter / backendsDependency rules: valence-core owns ports and runtime (no engine SDK);
valence-backend-* advertise open ENGINE_IDs; the public crate re-exports behind features;
apps own schema roots and call valence-codegen from build.rs; one operation stays on
one backend; host adapters inject at boot.
§Next steps
| Task | Start here |
|---|---|
| Example walkthrough | examples/README.md |
| Schema DSL fields | valence_schema!, valence_trait_schema! |
| Build-time codegen | valence-codegen, examples/codegen-host |
| Wire storage | Valence::builder(), InMemoryBackend |
| Model CRUD | Model, examples/product-model-host |
| Multi-backend routing | DatabaseRouter, multi_backend example |
| Cross-backend hop + query | examples/cross-backend-model-host |
| Hybrid multi-logical | hybrid_multi_logical example (hybrid,mem) |
| Custom adapter | DatabaseBackend, examples/acme-valence-backend-stub |
| Surreal inventory bootstrap | examples/embedded-bootstrap |
| SQLite | SqliteBackend, quickstart_sqlite example |
| IndraDB | IndradbBackend, quickstart_indradb example |
| Surreal embedded | SurrealEmbeddedBackend, surreal_embedded example |
| Postgres | PostgresBackend, quickstart_postgres (env-gated) |
| MongoDB | MongoBackend, quickstart_mongodb (env-gated) |
| Redis | RedisBackend, quickstart_redis (env-gated) |
| Admin runtime | SchemaRegistry, QueryCore, examples/admin-runtime-host |
| Config / env vars | crate README.md |
| How to run examples | examples/README.md |
§Entry points
prelude— ergonomic schema authoring importsValence/ValenceBuilder— runtime assemblyvalence_schema!— schema DSL macroModel— generated CRUD surfaceDatabaseBackend/DatabaseRouter— storage ports
§Prerequisites and gotchas
- Enable backend features explicitly (
memis on by default). - Product schemas and codegen roots belong in your application.
- Wire adapters (postgres/mongodb/redis) need live URLs; examples skip cleanly when unset.
- SurrealDB support lives in
valence-backend-surreal(featuresurreal), not in core ports. - Generated models (or macro-expanded schemas) must be linked into the binary or
inventorywill not see them.
§Runnable examples
Walkthrough ladder: examples/README.md
— quickstarts, workspace hosts, and testkit hop fixtures in order.
Canonical path (see crate README How to run examples):
cargo run -p uf-valence --example quickstart --features mem
cargo run -p uf-valence --example quickstart_sqlite --features sqlite
cargo run -p uf-valence --example multi_backend --features mem
cargo test -p codegen-host
cargo run -p cross-backend-model-host| Example | Features | Notes |
|---|---|---|
quickstart | mem | Schema + mem boot + registry proof |
quickstart_sqlite | sqlite | Embedded SQLite |
multi_backend | mem | Multiple logical backends |
hybrid_multi_logical | hybrid,mem | Hybrid primary, several logical names |
surreal_embedded | surreal | Surreal mem engine |
quickstart_indradb | indradb | Embedded IndraDB |
quickstart_postgres | postgres | Requires DATABASE_URL |
quickstart_mongodb | mongodb | Requires VALENCE_MONGODB_URI |
quickstart_redis | redis | Requires VALENCE_REDIS_URL |
quickstart_telemetry | mem,telemetry-console | Console telemetry sink |
Workspace hosts (see examples/README.md):
minimal-schema, codegen-host, product-model-host, cross-backend-model-host,
admin-runtime-host, embedded-bootstrap, acme-valence-backend-stub.
Hop crates (hop-pair-model-host, hop-chain-model-host) are testkit/matrix fixtures only.
Modules§
- actor
- Actor identity for privacy checks and audit trails.
- actor_
policy - Optional policy for validating opaque
actor_jsonat factory build time. - admin_
entity_ delete - Table-keyed queued delete for admin tooling.
- backend
- Pluggable database backends for Valence.
- batch
- Batch create hooks for codegen
BatchCreatableimpls (full batch runtime is host-owned). - compiled_
query - Parameterized statement for
crate::backend::DatabaseBackend::execute_compiled_query. - compiled_
query_ factory - Dialect-specific compiled queries for deletion DAG and ownership helpers.
- connection
- Connection cardinality, delete semantics, and id helpers for generated models.
- currency
- Monetary amount with an ISO-4217
CurrencyCode. - database_
retry - Retry database operations when the engine reports retryable transaction contention.
- datetime_
unix - Persist
chrono::DateTime<Utc>as signed UTC unix seconds. - deletion
- Cascading delete orchestration — dispatch hooks and DAG planning.
- entity
- Privacy-filtered entity view for admin tooling.
- error
- Error types for Valence routing and backends.
- evaluator
- Runtime resolution of which
crate::backend::DatabaseBackenda schema uses. - instrumentation
- Instrumentation hooks for Valence runtime metrics and events.
- inventory
- github crates-io docs-rs
- iter
- Row-level iter descriptor types for
valence_schema! { iters: [...] }. - json_as
- Serde helpers for
FieldType::JsonAsfields. - known_
engines - Stable engine id slugs for first-party reference adapters.
- model
- Model contracts generated from schema DSL.
- owner_
ref - Stable owner identity for row-level ownership metadata.
- ownership
- First-class data ownership (platform tables + hooks from generated CRUD).
- ports
- Host-injectable ports (secrets, identity, endpoints).
- prelude
- Ergonomic imports for schema authoring and generated models.
- privacy
- Schema-driven privacy for entity and field access.
- privacy_
policies - Re-export built-in privacy policy constants for schema authors.
- query
- Composable query builder — filters, sorts, compiled execution.
- query_
compiler - Query compilation from
crate::query::QueryCoretocrate::compiled_query::CompiledQuery. - query_
compiler_ registry - Registry mapping
DatabaseBackend::engine_idto query compilers. - read_
cache - Valence-wide read-through LRU for
Model::get-shaped point reads. - record_
id - Backend-agnostic record identifier (
table+id). - redact
- Redact credentials from connection endpoints and error text.
- reference
- Reference placeholders for batch entity creation.
- register_
logical - Multi-logical registration of a shared
DatabaseBackendon aDatabaseRouter. - registry
- Generic string-keyed registry (inventory + HashMap, no quark dependency).
- request_
cache - Request-scoped permission check cache (shared via
Arcon clonedValencehandles). - router
- Named backend registry (heterogeneous engines per router).
- router_
key - Compound router keys:
"{engine_id}:{logical_name}". - row_
json - JSON row helpers shared by query fetch paths.
- runtime
- Valence runtime handle and builder.
- safe_
ident - Charset validation for SQL/Surreal identifiers interpolated into queries.
- schema
- Schema metadata registration hooks for
valence_schema!. - schema_
api - Structured schema metadata produced by the Valence DSL.
- schema_
types - DSL type vocabulary used by
valence_schema!andvalence_trait_schema!. - side_
effect - Side effect types for post-mutation hooks.
- storage_
layout - Schema-driven physical storage layout and dialect DDL export.
- trait_
registry - Runtime trait metadata registry.
- trait_
schema - Trait schema metadata for
valence_trait_schema!. - ttl
- Table-level TTL policy, stamp helpers, and ensure entry points. Table-level TTL: schema policy, create-time stamping, and ensure APIs.
- validation
- Field validation framework
Macros§
- include_
generated_ models - Include
$OUT_DIR/generated_models.rsproduced byvalence_codegen::build. - valence_
schema - Defines a Valence model schema at compile time.
- valence_
trait_ schema - Defines a reusable trait schema (fields, optional connections, optional policies).
Structs§
- Backend
Capabilities - Capabilities advertised by a storage adapter (telemetry labels and contract tests).
- Cache
Policy - Resolved cache policy used on hot paths (built once at
crate::HybridBackendBuilder::build). - Cache
Rules - Whether tables are cached by default, plus include/exclude overrides.
- Compiled
Query - Console
Sink - Writes telemetry to stderr (development and bench).
- Currency
- Composite money value: ISO code + signed minor units.
- Database
- Convenience namespace for built-in evaluators.
- Database
From Engine - Built-in evaluator: look up
logical_name+engine_idon aDatabaseRouter. - Database
Router - Maps compound router keys to concrete
DatabaseBackendimplementations. - Delete
Side Effect Descriptor - One registered delete side-effect dispatcher for a table (submitted by codegen).
- Deletion
Request - Payload passed to the registered deletion dispatcher (typically starts a host job orchestrator).
- Deletion
Service - EnvEndpoint
Resolver - Resolve physical database URLs from env at bootstrap.
- EnvSecret
Provider - Read secrets from process environment variables (
key= env var name). - Field
Change - Foreign
KeyRef - Normalized foreign-key/reference metadata for a field.
- HopSource
- A previous query in the hop chain. Compiled at execution time.
- Hybrid
Backend - Postgres/SQL primary with an embedded IndraDB read-through cache for records and edges.
- Hybrid
Backend Builder - Fluent builder for
HybridBackend. - IdOnly
Record - Minimal record containing only the ID field.
- InMemory
Backend - In-memory
DatabaseBackendstoring rows and graph edges in process memory. - Indra
Query Compiler - Compiles
QueryCoreto parameterized SQL (document-row subset) for IndraDB. - Indradb
Backend - Embedded IndraDB
DatabaseBackendmapping Valence tables to vertex types. - Instrumented
Backend - Wraps an inner backend and emits instrumentation telemetry on every I/O call.
- Iter
Descriptor - One registered iter implementation for a table (submitted by
valence_schema!). - Iter
Evaluation - Result of an iter
should_runhook. - Json
Actor Context ActorContextthat stores JSON as-is.- Json
Actor Factory - Reference factory that wraps JSON in
JsonActorContext. - Known
Engines - Well-known
DatabaseBackend::engine_id values shipped with this workspace. - Layout
Diff - Result of comparing desired layout to live physical layout.
- Layout
Field - One physical field in a typed table layout.
- Mongo
Backend - MongoDB-backed
DatabaseBackendstoring JSON documents per collection. - Mongo
Query Compiler - Compiles
QueryCorefor the MongoDB adapter. - Mutation
- Mutation
Timer - Timer for mutation wall time (L1).
- NoOp
Secret Provider - Always returns
Ok(None)— default when no provider is configured. - NoOp
Sink - Discards all telemetry (default for tests and minimal hosts).
- Noop
Endpoint Resolver - Always returns
Ok(None). - Owner
Ref - Resolved owner for a row (stored in ownership tables at the host layer).
- Ownership
Config - Ownership behavior declared in schema DSL (
ownership: { ... }). - Ownership
Service - Ownership persistence and transfer helpers.
- Parse
Currency Code Error - Unknown or non-canonical currency code string.
- Postgres
Backend - Postgres-backed
DatabaseBackendusing typed columns (JSONB cells forJsonfields). - Privacy
Error - Error returned when a privacy rule blocks field access.
- Privacy
Evaluator - Privacy evaluation engine
- Privacy
Rule - A single privacy rule
- Query
Compiler Registry - Resolves a
QueryCompilerfor a storage engine slug. - Query
Core - Core query builder that compiles per registered engine.
- Record
Id - Recorded
Counter - Captured counter increment.
- Recorded
Event - Captured structured log event.
- Recorded
Gauge - Captured gauge sample.
- Recording
Sink - Append-only in-memory sink for assertions in unit and integration tests.
- Redis
Backend - Redis-backed
DatabaseBackendstoring one Hash per record (field → JSON cell). - Redis
Query Compiler - Compiles
QueryCorefor the Redis adapter. - Reference
- Referenced
Entity - Register
Backend Logical Names Options - Options for multi-logical backend registration.
- Register
Embedded Logical Names Options - Options for embedded logical name registration.
- Reject
External System Actor - Rejects well-known System-shaped actors on
ActorTrust::Externalpaths. - Request
Permission Cache - Memoizes permission name lookups for one HTTP/server-fn request.
- Resolver
Context - Router
Valence Factory ValenceFactorybacked by a sharedDatabaseRouter.- Router
Valence Factory Config - Host wiring template applied when building from a shared router.
- Schema
- Complete runtime schema produced from
valence_schema!. - Schema
Connection - Connection/relationship definition from schema DSL.
- Schema
Connections Overlay Init - Codegen-submitted trait-merged connections for deletion graph and tooling.
- Schema
Edge - Edge/relationship definition retained for older schema shapes.
- Schema
Field - Expanded metadata for one field declared in
fields: [...]. - Schema
Meta - Schema metadata summary block.
- Schema
Metadata Init - Lazy initializer submitted via
inventory::submit!. - Schema
Policies - Full entity-level policy declaration for the schema.
- Schema
Policy Rule - One policy rule reference stored in schema metadata.
- Schema
Policy Rules - Policy rule buckets for a single CRUD operation.
- Schema
Privacy - Top-level privacy summary for a schema.
- Schema
Registry - Owned registry for schema metadata.
- Schema
TtlPolicy - Table-level time-to-live policy from the schema DSL (
ttl: { seconds, mode }). - SqlQuery
Compiler - Compiles
QueryCoreto parameterized SQL. - Sqlite
Backend - SQLite-backed
DatabaseBackendusing typed columns from schema layout. - Static
Endpoint Resolver - In-memory map of logical name → URL.
- Storage
Layout - Physical layout for one table, derived from schema metadata.
- Surreal
Embedded Backend - Wraps a local Surreal handle (memory, RocksDB, etc.).
- Surreal
Query Compiler - Compiles
QueryCoreto parameterized SurrealQL. - Surreal
Remote Backend - Wraps a remote-capable
Surreal<Any>client (WebSocket / HTTP / …). - Trait
Definition - Runtime metadata for a single Valence trait definition.
- Trait
Definition Init - Lazy initializer for trait definitions.
- Trait
Field Def - Minimal field descriptor stored in trait definitions.
- Trait
Implementor - Links a concrete table to the trait it implements.
- Trait
Policies - Entity-level privacy policies declared by a trait.
- Trait
Policy Rules - Policy rule names for a single CRUD operation bucket.
- Trait
Registry - Valence
- Host-assembled Valence handle.
- Valence
Builder - Builder for constructing a
Valenceruntime. - Valence
Entity
Enums§
- Actor
- Who or what is performing a Valence operation.
- Actor
Trust - Trust level for an actor JSON call site.
- Additive
Op - One additive change to apply during sync.
- Backend
TtlCapability - Whether a storage adapter can enforce schema TTL natively.
- Cardinality
- Currency
Code - ISO 4217 alphabetic currency code.
- Currency
Error - Same-currency arithmetic / conversion failure.
- Date
Time Predicate - Predicate for datetime fields.
- Embedded
Engine - Embedded Surreal engine selection.
- Error
- Field
Operation - Field access direction for privacy checks.
- Field
Storage - Physical storage kind for one field (engine-agnostic).
- Field
Type - Field data types accepted by the Valence DSL.
- HopType
- Describes how a hop connects a source query to a target query.
- IntPredicate
- Predicate for integer fields.
- Json
AsSerde Error - How
FieldType::JsonAshandles serde failures on the model boundary. - Mutation
Kind - Null
Predicate - Predicate for checking null/not-null on optional fields.
- OnDelete
- Owner
Kind - Kind of principal that owns a row.
- Privacy
Operation - Which CRUD operation is being checked.
- Record
Predicate - Predicate for record-link fields (stored as Surreal
RecordId). - Role
- Role markers used by older privacy/mutation DSL shapes.
- Sort
Direction - Sort direction for ordering query results.
- SqlColumn
Type - SQLite / Postgres column type fragment.
- String
Predicate - Predicate for string/text fields.
- Surreal
Field Type - Surreal
DEFINE FIELDtype fragment. - Validator
- Built-in validators attachable to schema or trait fields.
Constants§
- DEFAULT_
EMBEDDED_ SURREAL_ LOGICAL_ NAMES - Include in bootstrap registration so schemas that omit explicit
database:still resolve. - DEFAULT_
IN_ MEMORY - DEFAULT_
IN_ MEMORY_ ROUTER_ KEY - Router key for default in-memory backend (
inmemory_mem:default). - EXPIRE_
AT_ FIELD - Reserved document field holding RFC3339 UTC expire time (create-only).
- HYBRID_
ENGINE_ ID - Stable engine slug for router keys (
hybrid_indra_sql:logical_name). - HYBRID_
PRIMARY - Schema evaluator const for
database:routing (primaryis the logical name in the key). - INDRADB_
ENGINE_ ID - Stable engine slug for router keys (
indradb:logical_name). - INDRADB_
PRIMARY - Schema evaluator const for
database:routing. - MAX_
QUERY_ LIMIT - Maximum rows a single
QueryCore::executemay return. - MAX_
QUERY_ OFFSET - Maximum query offset accepted by
QueryCore. - MEM_
ENGINE_ ID - Stable engine slug for router keys (
inmemory_mem:logical_name). - MONGODB_
ENGINE_ ID - Stable engine slug for router keys (
mongodb:logical_name). - MONGODB_
PRIMARY - Schema evaluator const for
database:routing. - POSTGRES_
ENGINE_ ID - Stable engine slug for router keys (
postgres:logical_name). - POSTGRES_
PRIMARY - Schema evaluator const for
database:routing. - PRIVACY_
BYPASS_ ENV - Env var requesting privacy bypass (
1to request). - PRIVACY_
BYPASS_ FORCE_ ON_ ENV - Second key required with
PRIVACY_BYPASS_ENVbefore bypass is honored. - REDIS_
ENGINE_ ID - Stable engine slug for router keys (
redis:logical_name). - REDIS_
PRIMARY - Schema evaluator const for
database:routing. - SQLITE_
ENGINE_ ID - Stable engine slug for router keys (
sqlite:logical_name). - SQLITE_
PRIMARY - Schema evaluator const for
database:routing. - SURREAL_
ENGINE_ ID - Stable engine slug for router keys (
surrealdb:logical_name).
Traits§
- Actor
Context - Request-scoped identity view used by privacy and ownership checks.
- Actor
Factory - Build an
ActorContextfrom opaque JSON at the Valence port boundary. - Actor
Json Policy - Validates
actor_jsonbefore acrate::runtime::ValenceFactorybinds an actor. - Batch
Creatable - Marker trait for models participating in batch create codegen.
- Database
Backend - Storage engine behind Valence: CRUD, compiled queries, and graph edges.
- Database
Endpoint Resolver - Resolve a physical connection URL for a logical database name at bootstrap.
- Database
Evaluator - IdHolder
- Model
- Core trait that all generated models implement.
- Policy
Evaluator - Per-rule evaluator referenced from schema metadata (not registered on the builder).
- Query
Compiler - Compiles
QueryCorefor one database dialect. - Schema
Metadata - Compile-time schema metadata access for generated models (trait; struct is
crate::schema::SchemaMetadata). - Secret
Provider - Resolve secret material by key at runtime.
- Side
Effect - Telemetry
Sink - Host-injectable telemetry sink for Valence ORM metrics and events.
- Valence
Factory - Factory for reconstructing
Valenceinstances outside request context. - With
Reference
Functions§
- apply_
deletion_ node - Apply one deletion DAG node under
valence(deletion-scoped; no Update on SetNull). - bootstrap_
embedded_ router - Bootstrap an embedded router from explicit logical names.
- bootstrap_
embedded_ router_ from_ inventory - Bootstrap an embedded router using schema inventory discovery.
- check_
dag_ delete_ privacy - Authorize
PrivacyOperation::Deletefor every CascadeDelete node indagundervalence’s actor. - check_
dag_ delete_ privacy_ with_ registry - Like
check_dag_delete_privacy, but usesregistry(tests / tooling). - collect_
distinct_ embedded_ surreal_ logical_ names - Distinct embedded Surreal logical names from every linked
valence_schema!plus defaults. - compile_
for_ engine - Compile
corefor the given backend engine id. - connect_
embedded_ at_ path - Open an embedded Surreal database at
path, pin namespace/database, optionally clear stale lock. - connect_
embedded_ from_ env - Open embedded Surreal using neutral env vars.
- database_
from_ env - Read database name from
VALENCE_DB(defaultprod). - dispatch
- Invoke the dispatcher if configured.
- dispatch_
queued_ delete_ side_ effects - Run registered Delete side effects for
tableusing a pre-delete JSON snapshot. - embedded_
engine_ from_ env - Read embedded engine from
VALENCE_EMBEDDED_ENGINE(default RocksDB). - embedded_
path_ from_ env - Read store path from
VALENCE_EMBEDDED_PATH(defaultsurreal/data). - extract_
id_ from_ record - Errors
- extract_
id_ from_ record_ display - Strip the first
table:prefix from a Surreal thing display string; return the id portion. - extract_
id_ from_ select_ value - Parse a row from
SELECT VALUE id(JSON) into the record id string (notable:prefix). - find_
iter_ descriptor - Find a descriptor by logical table name and iter type name (Rust type string).
- get_
record_ via_ cache - Point-get with optional read-through cache (raw row, pre-privacy).
- get_
record_ with_ ownership_ bundle_ via_ cache - Unified
Model::getfetch: one backend round trip for row + ownership gate status (when cache cold). - global_
compiler_ registry - Global registry populated from enabled compiler features.
- id_
from_ model - Errors
- install_
default_ mem_ router - Register the default in-memory backend under
DEFAULT_IN_MEMORY_ROUTER_KEY. - install_
telemetry_ sink - Install the process-wide Valence telemetry sink (tests and host boot).
- invalidate
- Drop cached rows after a write or ownership status change.
- invalidate_
for_ backend - Drop a cached row for a specific backend after a write.
- is_
deletion_ dispatcher_ registered - True if
register_deletion_dispatcher(or a test dispatcher) was installed in this process. - is_
system_ shaped_ actor - True when
actor_jsonuses the well-known System object key. - iter_
descriptors_ for_ table - All iters registered for a table.
- json_
value_ to_ fields - Flatten a JSON object into string field pairs for sinks that only store tuples.
- list_
ttl_ table_ names - Tables in
registrywhose schema declaresttl:. - namespace_
from_ env - Read namespace/database from
VALENCE_NS/VALENCE_DB(defaultprod/prod). - prepare_
create_ content - Prepare
contentfor create / creating-upsert when the table has a TTL policy. - privacy_
bypass_ active - True when privacy evaluation is skipped (both bypass env keys set).
- queue_
delete_ entity - Queue a privacy-checked deletion run for
table/id. - queue_
delete_ entity_ returning_ run_ id - Like
queue_delete_entity, but returns the newvalence_deletion_runid when a run was created (Nonewhen the row was already missing or alreadypending_deletion). - read_
cache_ enabled - Whether the read-through record cache is active (default on;
VALENCE_READ_CACHE=0disables). - redact_
credentials_ in_ text - Redact
scheme://userinfo@hostsubstrings embedded in free-form error text. - redact_
endpoint - Remove URL userinfo before placing an endpoint in an error or log message.
- register_
backend_ logical_ names - Register one shared backend under each logical name.
- register_
backend_ logical_ names_ slices - Register
backendunder every distinct logical name ingroups(deduplicated). - register_
deletion_ dispatcher - Register the process-wide deletion dispatcher (call once from server bootstrap).
- register_
embedded_ logical_ names - Register one embedded Surreal handle under each logical name.
- register_
embedded_ logical_ names_ from_ inventory - Register embedded logical names discovered from schema inventory.
- register_
embedded_ logical_ names_ slices - Register
dbunder every distinct logical name ingroups(deduplicated). - register_
noop_ deletion_ dispatcher_ for_ tests - Install a no-op dispatcher when the slot is still empty (integration tests, harness crates).
- retry_
on_ database_ tx_ conflict - Retry an async Valence operation when
is_retryable_transaction_contentionapplies. - router_
key - Build the compound router key used for registration and resolution.
- schema_
connections_ for_ table - Connections for
table_name, preferring macro-registered schema connections. - shared_
router_ with_ embedded_ logical_ names - Build a router with embedded Surreal registered for each logical name.
- surreal_
record_ id_ for - Build a SurrealDB record id for a table and id string.
- telemetry_
sink - Current sink, or
NoOpSinkwhen none is installed. - try_
log_ event - Emit a structured event from flat field tuples.
- try_
log_ event_ value - Emit a structured event from a JSON payload (instrumentation default).
- try_
record_ counter - Emit a counter when a sink is installed.
- try_
record_ gauge - Emit a gauge when a sink is installed.
- wrap_
backend - Wrap
innerwithInstrumentedBackend.
Type Aliases§
- Delete
Side Effect Dispatch Fn - Type-erased delete side-effect runner (before-row as JSON).
- Iter
Execute Fn - Type-erased
executefor orchestration (row as JSON). - Iter
Should RunFn - Type-erased
should_runfor orchestration (row as JSON). - Result
- SDb
- Embedded Surreal client type.
- Schema
Metadata Struct - Alias used by
valence_schema!codegen. - Surreal
MemBackend - Alias for
SurrealEmbeddedBackend(historical template name).