// ============================================================
// exchange.entity.ts — 交易所配置实体
// ============================================================
// 映射到 PostgreSQL exchanges 表，存储已接入的交易所元信息。
// 由 TypeORM 管理（关系数据），不与 TimescaleDB 耦合。
//
// 继承 CommonBaseEntity：id (UUID) / created_at / updated_at
// ============================================================

import {
  Entity,
  Column,
  OneToMany,
} from "typeorm";
import { CommonBaseEntity } from "./common.entity";

@Entity("exchanges")
export class Exchange extends CommonBaseEntity {
  /** 交易所唯一标识（如 binance / okx / bybit） */
  @Column("varchar", { length: 50, unique: true })
  name!: string;

  /** 交易所显示名称（如 Binance / OKX / Bybit） */
  @Column("varchar", { length: 100 })
  label!: string;

  /** 是否启用该交易所的数据采集 */
  @Column("boolean", { default: true })
  enabled!: boolean;

  /** 交易所特定配置（JSON：费率、最小下单量、API 限频等） */
  @Column("jsonb", { nullable: true })
  config?: Record<string, unknown>;

  /**
   * 该交易所下的所有交易对。
   * 使用字符串引用避免循环依赖（TradingPair 也引用 Exchange）。
   */
  @OneToMany("TradingPair", "exchange")
  tradingPairs!: unknown[];
}
