feat(data): 实现配置表 CRUD 与 Schema 初始化拆分

- 新增 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 初始化脚本
This commit is contained in:
Rekey
2026-06-07 20:46:35 +08:00
parent 10e13ae8da
commit e91cad79e6
18 changed files with 8560 additions and 5 deletions
+121
View File
@@ -0,0 +1,121 @@
// ============================================================
// 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";