package com.bizzan.bitrade.entity;

import com.bizzan.bitrade.constant.CommonStatus;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.*;

/**
 * 主网信息表
 * 存储区块链主网/协议信息，如 ERC20、TRC20、BEP20、Bitcoin 等
 *
 * @author auto
 * @date 2026-05-13
 */
@Entity
@Data
@Table(name = "coin_network")
public class CoinNetwork {

    /** 主键，自增 */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /** 主网名称，如 ERC20、TRC20、BEP20、Bitcoin，全局唯一 */
    @ApiModelProperty("主网名称")
    @Column(nullable = false, unique = true, length = 50, columnDefinition = "varchar(50) comment '主网名称，如ERC20/TRC20/BEP20'")
    private String name;

    /** 协议/链名称，如 Ethereum、TRON、BSC */
    @ApiModelProperty("协议链名称")
    @Column(length = 100, columnDefinition = "varchar(100) default null comment '协议链名称，如Ethereum/TRON'")
    private String protocol;

    /**
     * 主网状态
     * @see CommonStatus
     */
    @ApiModelProperty("状态：0=正常 1=禁用")
    @Enumerated(EnumType.ORDINAL)
    @Column(columnDefinition = "int default 0 comment '状态 0正常 1禁用'")
    private CommonStatus status = CommonStatus.NORMAL;

    /** 排序值，值越小越靠前 */
    @ApiModelProperty("排序")
    @Column(columnDefinition = "int default 0 comment '排序'")
    private int sort = 0;

    /** 节点 RPC 地址，供链上 hash 查询使用，如 https://mainnet.infura.io/v3/xxx */
    @ApiModelProperty("节点 RPC 地址")
    @Column(name = "rpc_url", length = 255,
            columnDefinition = "varchar(255) default null comment '节点RPC地址，用于链上hash查询'")
    private String rpcUrl;

    /** 备注说明 */
    @ApiModelProperty("备注")
    @Column(length = 255, columnDefinition = "varchar(255) default null comment '备注'")
    private String remark;
}
