| Crates.io | zakat-sqlite |
| lib.rs | zakat-sqlite |
| version | 1.4.0 |
| created_at | 2026-01-03 04:17:13.796376+00 |
| updated_at | 2026-01-05 15:01:22.963573+00 |
| description | SQLite persistence layer for Zakat ledger and event storage. |
| homepage | |
| repository | https://github.com/IRedDragonICY/zakatrs |
| max_upload_size | |
| id | 2019590 |
| size | 105,378 |
SQLite persistence layer for Zakat ledger and event storage.
zakat-sqlite provides durable storage for:
use zakat_sqlite::SqliteStore;
use zakat_ledger::LedgerEvent;
// Initialize store
let store = SqliteStore::open("zakat.db").await?;
// Store an event
store.save_event(&LedgerEvent::Deposit {
date: "2025-01-01".parse().unwrap(),
amount: dec!(50000),
asset_type: "cash".into(),
}).await?;
// Query events
let events = store.events_between(
"2025-01-01".parse().unwrap(),
"2025-12-31".parse().unwrap(),
).await?;
The crate automatically manages schema migrations:
CREATE TABLE ledger_events (
id TEXT PRIMARY KEY,
event_type TEXT NOT NULL,
timestamp TEXT NOT NULL,
payload TEXT NOT NULL,
created_at TEXT NOT NULL
);
CREATE TABLE wealth_snapshots (
id TEXT PRIMARY KEY,
date TEXT NOT NULL,
total_wealth TEXT NOT NULL,
asset_breakdown TEXT NOT NULL
);
use zakat_sqlite::SqliteStore;
use zakat_ledger::Timeline;
// Load timeline from database
let store = SqliteStore::open("zakat.db").await?;
let events = store.all_events().await?;
let mut timeline = Timeline::new();
for event in events {
timeline.add_event(event);
}
For high-concurrency applications:
use zakat_sqlite::SqliteStore;
let store = SqliteStore::with_pool_size("zakat.db", 5).await?;
sqlx - Async SQLite drivertokio - Async runtimeMIT