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:
@@ -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";
|
||||
Reference in New Issue
Block a user