stateset-embedded 1.23.5

Embeddable commerce library - the SQLite of commerce operations
Documentation

stateset-embedded

crates.io docs.rs

The SQLite of commerce operations — an embeddable commerce engine that runs anywhere, with no server to operate and no network hop between your code and your orders.

stateset-embedded is the batteries-included API that combines stateset-core (domain models), stateset-db (storage), stateset-pricing (totals), and stateset-observability (metrics/tracing) into one library. Point it at a file and you have a commerce backend.

Usage

use stateset_embedded::{Commerce, CreateCustomer, CreateOrder, CreateOrderItem, CreateInventoryItem};
use rust_decimal_macros::dec;

# fn main() -> Result<(), Box<dyn std::error::Error>> {
// Opens the database, creating and migrating it if needed
let commerce = Commerce::new("./store.db")?;

let customer = commerce.customers().create(CreateCustomer {
    email: "alice@example.com".into(),
    first_name: "Alice".into(),
    last_name: "Smith".into(),
    ..Default::default()
})?;

commerce.inventory().create_item(CreateInventoryItem {
    sku: "SKU-001".into(),
    name: "Widget".into(),
    initial_quantity: Some(dec!(100)),
    ..Default::default()
})?;

let order = commerce.orders().create(CreateOrder {
    customer_id: customer.id,
    items: vec![CreateOrderItem {
        sku: "SKU-001".into(),
        name: "Widget".into(),
        quantity: 2,
        unit_price: dec!(29.99),
        ..Default::default()
    }],
    ..Default::default()
})?;

commerce.inventory().adjust("SKU-001", dec!(-2), "Order fulfillment")?;
# let _ = order;
# Ok(())
# }

Use ":memory:" instead of a path for an ephemeral store — handy in tests.

What You Get

  • A wide domain surface reachable from one Commerce handle — orders, customers, products, inventory, returns, payments, shipments, plus the back office (purchasing, warehouse, manufacturing, quality, finance, traceability)
  • Money as decimals, never floatsrust_decimal throughout
  • Migrations on open — the schema is created and upgraded for you
  • Sync and asyncCommerce for blocking callers, AsyncCommerce for async
  • Backup and restore — consistent VACUUM INTO snapshots with a checksummed manifest, plus portable JSON export/import
  • Events — outbound webhooks with HMAC signing behind the events feature

Feature Flags

Feature Description Default
sqlite SQLite storage via bundled rusqlite Yes
events Outbound webhooks with HMAC signing (implies async) Yes
postgres Async PostgreSQL storage via sqlx (implies async) No
sqlite-events SQLite-backed event queue No
vector Vector search over embeddings No
otel OpenTelemetry export via stateset-observability No
async Tokio + futures; usually pulled in by events or postgres No

Also Available In

Node.js (@stateset/embedded), Python (stateset-embedded), Ruby (stateset_embedded), Go, Java, Kotlin, Swift, C#/.NET, PHP, and WASM — all over the same engine.

Prefer a single Rust dependency? Use stateset-sdk. Need HTTP? See stateset-http.

License

MIT OR Apache-2.0