malkhut: DuckDB file-backed asset store — schema, sync, queries, persistence
DuckDB store (asset_store.py): - 4 tables: assets (28 cols), exchanges (10 cols), asset_exchanges (junction), behavior_profiles (28 cols) - Schema with indexes on blockchain, coingecko_id, cmc_id, exchange_id - sync_from_profiles(): populate from in-memory dicts in one call - Query API: query_assets(**filters), get_asset(), symbols_for_exchange(), assets_on_blockchain(), asset_count(), exchange_count() - Case-insensitive exchange lookup - File-backed persistence: data survives connection close/reopen - Performance: <1s sync, 100 queries in <1s, 1000 gets in <1s 30 tests covering: - Schema creation and table structure (3 tests) - Sync from profiles (6 tests, idempotent) - Asset CRUD (7 tests, query by blockchain/coingecko/sector) - Exchange mapping (5 tests, case-insensitive) - Behavior profiles (4 tests) - Persistence across connections (2 tests) - Performance baseline (3 tests) Total: 1276 tests across 50 files, all green, zero regressions.
This commit is contained in:
@@ -1 +1,3 @@
|
||||
from malkhut.storage.ch_store import MalkhutCHStore
|
||||
from malkhut.storage.asset_store import AssetStore
|
||||
|
||||
__all__ = ["AssetStore"]
|
||||
|
||||
Reference in New Issue
Block a user