41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
"""ClickHouse wallet_memory.wallet_labels source — currently empty.
|
|
|
|
Schema (verified):
|
|
address String
|
|
chain_id String
|
|
label_name String
|
|
label_category String
|
|
source String
|
|
is_sanctioned UInt8 DEFAULT 0
|
|
loaded_at DateTime DEFAULT now()
|
|
label_subtype String DEFAULT ''
|
|
|
|
Returns [] until labels are imported. The plan is to bulk-import
|
|
the CSVs (etherscan_combined, ethereum labels, solana labels) via
|
|
the warehouse_etl jobs. Until then, this adapter is a no-op.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
from app.domain.labels.models import Label
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
async def query_clickhouse_labels(address: str, chain: str = "ethereum") -> list[Label]:
|
|
"""Query ClickHouse wallet_memory.wallet_labels table.
|
|
|
|
Currently returns [] — table is empty until CSVs are bulk-imported.
|
|
Real implementation will use HTTP to clickhouse client over
|
|
native protocol via app.core.duckdb_analytics.query_postgres-style attach.
|
|
|
|
Chain mapping: clickhouse stores chain_id as String. We translate
|
|
our 'ethereum'/'solana' names to the chain_id values used in the table.
|
|
"""
|
|
# TODO: when wallet_memory.wallet_labels is populated, use:
|
|
# from app.core.duckdb_analytics import DuckDBAnalytics
|
|
# d = DuckDBAnalytics()
|
|
# rows = d.query_postgres(...) # if we ever swap CH for Postgres
|
|
# OR use httpx against CH HTTP interface at http://localhost:8123
|
|
return []
|