package com.bizzan.bitrade.dao;

import com.bizzan.bitrade.entity.CoinNetworkConfig;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 币种主网配置 DAO
 *
 * @author auto
 * @date 2026-05-13
 */
@Repository
public interface CoinNetworkConfigDao extends JpaRepository<CoinNetworkConfig, Long>, JpaSpecificationExecutor<CoinNetworkConfig> {

    /**
     * 按主键查询主网配置
     *
     * @param id 主键
     * @return 配置信息，不存在返回 null
     */
    CoinNetworkConfig findById(Long id);

    /**
     * 查询某币种下所有主网配置，按排序升序
     *
     * @param coinName 币种名称
     * @return 配置列表
     */
    List<CoinNetworkConfig> findAllByCoinNameOrderBySortAsc(String coinName);

    /**
     * 查询某主网下所有币种配置
     *
     * @param networkId 主网ID
     * @return 配置列表
     */
    List<CoinNetworkConfig> findAllByNetworkId(Long networkId);

    /**
     * 查询某币种在某主网下的配置
     *
     * @param coinName  币种名称
     * @param networkId 主网ID
     * @return 配置信息
     */
    CoinNetworkConfig findByCoinNameAndNetworkId(String coinName, Long networkId);

    /**
     * 判断某币种在某主网下是否已有配置
     *
     * @param coinName  币种名称
     * @param networkId 主网ID
     * @return 是否存在
     */
    boolean existsByCoinNameAndNetworkId(String coinName, Long networkId);
}
