e91cad79e6
- 新增 data/db/ 数据库访问层:pool 管理、类型定义、Zod 校验、参数化 SQL 查询 - 新增 data/db/config-crud.ts:MonitoredSymbolsRepo / ExchangeConfigRepo / AppConfigRepo 三个 CRUD 服务类 - 新增 data/config.ts:中心化配置模块,零依赖 .env 解析 + Zod 校验 - 新增 data/schema/:klines.sql + config.sql 参考 DDL - 新增 data/exchanges/:交易所类型定义与 Binance WebSocket 封装 - 新增 data/run/:交易所连接启动入口 - 重构 data/init-db/:001_init.sql 仅保留 TimescaleDB + klines,配置表拆分至 002_config.sql - 更新 docker-compose.yml:挂载 init-db 初始化脚本
122 lines
2.8 KiB
TypeScript
122 lines
2.8 KiB
TypeScript
// ============================================================
|
|
// db/index.ts — 统一导出
|
|
// ============================================================
|
|
// 使用方式:
|
|
// import { KlineRow, KlineRawSchema, bulkUpsertKlines } from "./db";
|
|
// import { MonitoredSymbolsRepo } from "./db";
|
|
// ============================================================
|
|
|
|
// 类型定义
|
|
export type {
|
|
Exchange,
|
|
KlineInterval,
|
|
LogLevel,
|
|
KlineRow,
|
|
KlineInsert,
|
|
AggregatedKlineRow,
|
|
MonitoredSymbolRow,
|
|
MonitoredSymbolInsert,
|
|
MonitoredSymbolUpdate,
|
|
ExchangeConfigRow,
|
|
ExchangeConfigInsert,
|
|
AppConfigRow,
|
|
AppConfigKey,
|
|
StreamKey,
|
|
StreamSubscription,
|
|
} from "./types";
|
|
|
|
// Zod 运行时校验
|
|
export {
|
|
ExchangeSchema,
|
|
KlineIntervalSchema,
|
|
LogLevelSchema,
|
|
SymbolSchema,
|
|
NumericStringSchema,
|
|
KlineRawSchema,
|
|
KlineBatchSchema,
|
|
MonitoredSymbolInsertSchema,
|
|
MonitoredSymbolUpdateSchema,
|
|
ExchangeConfigInsertSchema,
|
|
StreamKeySchema,
|
|
EnvConfigSchema,
|
|
} from "./validators";
|
|
|
|
export type {
|
|
KlineRaw,
|
|
KlineBatch,
|
|
MonitoredSymbolInsert as MonitoredSymbolInsertValidated,
|
|
MonitoredSymbolUpdate as MonitoredSymbolUpdateValidated,
|
|
ExchangeConfigInsert as ExchangeConfigInsertValidated,
|
|
StreamKey as StreamKeyValidated,
|
|
EnvConfig,
|
|
} from "./validators";
|
|
|
|
// 参数化 SQL 查询
|
|
export {
|
|
bulkUpsertKlines,
|
|
packBulkKlines,
|
|
queryKlinesRange,
|
|
queryKlinesLatest,
|
|
queryAggregatedKlines,
|
|
// monitored_symbols
|
|
queryAllMonitoredSymbols,
|
|
queryEnabledSymbols,
|
|
querySymbolsByExchange,
|
|
queryMonitoredSymbolById,
|
|
queryMonitoredSymbolByKey,
|
|
upsertMonitoredSymbol,
|
|
updateMonitoredSymbol,
|
|
disableMonitoredSymbol,
|
|
deleteMonitoredSymbol,
|
|
deleteMonitoredSymbolByKey,
|
|
// exchange_config
|
|
queryAllExchangeConfigs,
|
|
queryEnabledExchanges,
|
|
queryExchangeConfig,
|
|
queryExchangeConfigById,
|
|
upsertExchangeConfig,
|
|
updateExchangeConfig,
|
|
deleteExchangeConfig,
|
|
deleteExchangeConfigByExchange,
|
|
// app_config
|
|
queryAllAppConfig,
|
|
queryAppConfig,
|
|
queryAppConfigById,
|
|
upsertAppConfig,
|
|
updateAppConfig,
|
|
deleteAppConfig,
|
|
deleteAppConfigById,
|
|
// 复合查询
|
|
queryStreamSubscriptions,
|
|
} from "./queries";
|
|
|
|
export type { BulkKlineParams } from "./queries";
|
|
|
|
// ============================================================
|
|
// Config CRUD 服务层(推荐使用)
|
|
// ============================================================
|
|
|
|
export {
|
|
MonitoredSymbolsRepo,
|
|
ExchangeConfigRepo,
|
|
AppConfigRepo,
|
|
} from "./config-crud";
|
|
|
|
// ============================================================
|
|
// PostgreSQL 连接池 & 工具
|
|
// ============================================================
|
|
|
|
export {
|
|
pool,
|
|
healthCheck,
|
|
timescaleVersion,
|
|
withTransaction,
|
|
closePool,
|
|
registerShutdownHandlers,
|
|
initSchemaFromFile,
|
|
initSchema,
|
|
isSchemaInitialized,
|
|
} from "./pg";
|
|
|
|
export { default as defaultPool } from "./pg";
|