# This file is auto-generated by generate_models.py
# This file may be manually edited after generation
# The file has been formatted using isort and black

from typing import Any, ClassVar, Dict, List

from clickhouse_sqlalchemy import engines
from sqlalchemy import Column, PrimaryKeyConstraint, text

from tushare_models.core import Base, Date, DateTime, Float, Integer, String


class IndexClassify(Base):
    """申万行业分类"""

    __tablename__: str = "index_classify"
    __api_id__: ClassVar[int] = 181
    __api_name__: ClassVar[str] = "index_classify"
    __api_title__: ClassVar[str] = "申万行业分类"
    __api_info_title__: ClassVar[str] = "申万行业分类"
    __api_path__: ClassVar[List[str]] = ["数据接口", "指数专题", "申万行业分类"]
    __api_path_ids__: ClassVar[List[int]] = [2, 93, 181]
    __api_points_required__: ClassVar[int] = 2000
    __api_special_permission__: ClassVar[bool] = False
    __has_vip__: ClassVar[bool] = False
    __dependencies__: ClassVar[List[str]] = []
    __primary_key__: ClassVar[List[str]] = ["index_code"]
    __start_date__: ClassVar[str | None] = None
    __end_date__: ClassVar[str | None] = None
    __api_params__: ClassVar[Dict[str, Any]] = {
        "index_code": {"type": "str", "required": False, "description": "指数代码"},
        "level": {"type": "str", "required": False, "description": "行业分级（L1/L2/L3）"},
        "src": {"type": "str", "required": False, "description": "指数来源（SW申万）"},
        "parent_code": {"type": "str", "required": False, "description": "父级代码"},
        "limit": {"type": "int", "required": False, "description": "单次返回数据长度"},
        "offset": {"type": "int", "required": False, "description": "请求数据的开始位移量"},
    }

    __mapper_args__ = {"primary_key": __primary_key__}
    __table_args__ = (
        PrimaryKeyConstraint(*__primary_key__),
        # ClickHouse引擎
        engines.ReplacingMergeTree(order_by=__primary_key__),
        {
            "comment": "申万行业分类",
            # MySQL引擎
            "mysql_engine": "InnoDB",
            # StarRocks引擎
            "starrocks_primary_key": ",".join(__primary_key__),
            "starrocks_order_by": ",".join(__primary_key__),
            # Apache Doris引擎
            "doris_unique_key": __primary_key__,
            # Databend引擎
            "databend_cluster_by": __primary_key__,
        },
    )

    index_code = Column(
        "index_code", String(), nullable=False, default="", server_default=text("''"), comment="指数代码"
    )
    industry_name = Column(
        "industry_name", String(), nullable=False, default="", server_default=text("''"), comment="行业名称"
    )
    level = Column("level", String(), nullable=False, default="", server_default=text("''"), comment="行业名称")
    industry_code = Column(
        "industry_code", String(), nullable=False, default="", server_default=text("''"), comment="行业代码"
    )
    is_pub = Column("is_pub", String(), nullable=False, default="", server_default=text("''"), comment="是否发布指数")
    parent_code = Column(
        "parent_code", String(), nullable=False, default="", server_default=text("''"), comment="父级代码"
    )
    src = Column("src", String(), nullable=False, default="", server_default=text("''"), comment="行业分类(SW申万)")
