feat(wfe-sqlite): add SQLite persistence provider
SqlitePersistenceProvider using sqlx with in-memory and file-based SQLite. Schema with 6 tables, 8 indexes, created via ensure_store_exists. Transactions for multi-table operations. Passes persistence_suite tests.
This commit is contained in:
24
wfe-sqlite/Cargo.toml
Normal file
24
wfe-sqlite/Cargo.toml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[package]
|
||||||
|
name = "wfe-sqlite"
|
||||||
|
version.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
description = "SQLite persistence provider for WFE"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
wfe-core = { workspace = true }
|
||||||
|
sqlx = { workspace = true }
|
||||||
|
tokio = { workspace = true }
|
||||||
|
serde = { workspace = true }
|
||||||
|
serde_json = { workspace = true }
|
||||||
|
async-trait = { workspace = true }
|
||||||
|
uuid = { workspace = true }
|
||||||
|
chrono = { workspace = true }
|
||||||
|
thiserror = { workspace = true }
|
||||||
|
tracing = { workspace = true }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
wfe-core = { workspace = true, features = ["test-support"] }
|
||||||
|
pretty_assertions = { workspace = true }
|
||||||
|
rstest = { workspace = true }
|
||||||
|
tokio = { workspace = true, features = ["test-util"] }
|
||||||
1120
wfe-sqlite/src/lib.rs
Normal file
1120
wfe-sqlite/src/lib.rs
Normal file
File diff suppressed because it is too large
Load Diff
9
wfe-sqlite/tests/persistence.rs
Normal file
9
wfe-sqlite/tests/persistence.rs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
use wfe_core::persistence_suite;
|
||||||
|
|
||||||
|
async fn make_provider() -> wfe_sqlite::SqlitePersistenceProvider {
|
||||||
|
wfe_sqlite::SqlitePersistenceProvider::new(":memory:")
|
||||||
|
.await
|
||||||
|
.unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
persistence_suite!(|| async { make_provider().await });
|
||||||
Reference in New Issue
Block a user