fsqlite
Public API facade for FrankenSQLite -- a from-scratch SQLite-compatible database engine written in Rust.
Overview
fsqlite is the top-level crate that application code depends on. It re-exports a stable, ergonomic API surface from the internal workspace crates (fsqlite-core, fsqlite-vfs, fsqlite-types, fsqlite-error) and gates optional extension modules behind Cargo features. This is the primary entry point for opening connections, executing queries, and working with prepared statements.
fsqlite-error --> fsqlite-types --> fsqlite-ast --> fsqlite-parser
| |
+---> fsqlite-func |
+---> fsqlite-observability |
| v
+--------------> fsqlite-core <---+
|
fsqlite-vfs -------------+
| |
+-----> fsqlite (facade) <-- you are here
|
optional extensions:
fsqlite-ext-json
fsqlite-ext-fts5
fsqlite-ext-fts3
fsqlite-ext-rtree
fsqlite-ext-session
fsqlite-ext-icu
fsqlite-ext-misc
Cargo Features
| Feature | Default | Description |
|---|---|---|
json |
yes | JSON1 extension (json(), json_extract(), etc.) |
fts5 |
yes | Full-text search v5 |
rtree |
yes | R-Tree spatial index |
fts3 |
no | Full-text search v3/v4 (legacy) |
session |
no | Session extension (changeset/patchset) |
icu |
no | ICU Unicode collation/tokenization |
misc |
no | Miscellaneous extensions |
raptorq |
no | RaptorQ erasure coding support |
mvcc |
no | Multi-version concurrency control |
Key Types (re-exported)
Connection- A database connection. Open withConnection::open(path)orConnection::open(":memory:").PreparedStatement- A compiled SQL statement for repeated execution with different parameters.Row- A single result row. Access columns by index withrow.get(i)or get all values withrow.values().TraceEvent/TraceMask- Tracing callback types for monitoring SQL execution.fsqlite_vfs- The virtual filesystem layer (re-exported module).
Usage
use Connection;
// Open an in-memory database
let conn = open.expect;
// Execute DDL
conn.execute
.expect;
// Insert data
conn.execute
.expect;
// Query with results
let rows = conn.query
.expect;
for row in &rows
// Prepared statements with parameters
use SqliteValue;
let stmt = conn.prepare.unwrap;
let rows = stmt.query_with_params.unwrap;
assert_eq!;
// Single-row convenience
let row = conn.query_row.unwrap;
License
MIT