package com.qqchen.deploy.backend.deploy.service;

import com.qqchen.deploy.backend.deploy.dto.RepositoryBranchDTO;
import com.qqchen.deploy.backend.deploy.entity.RepositoryBranch;
import com.qqchen.deploy.backend.deploy.query.RepositoryBranchQuery;
import com.qqchen.deploy.backend.framework.service.IBaseService;

/**
 * Git仓库分支服务接口
 */
public interface IRepositoryBranchService extends IBaseService<RepositoryBranch, RepositoryBranchDTO, RepositoryBranchQuery, Long> {

    /**
     * 同步指定外部系统下的所有分支（异步执行，全量同步）
     *
     * @param externalSystemId 外部系统ID
     */
    void syncBranches(Long externalSystemId);

    /**
     * 同步指定仓库组下所有项目的分支（异步执行）
     *
     * @param externalSystemId 外部系统ID
     * @param repoGroupId 仓库组ID
     */
    void syncBranches(Long externalSystemId, Long repoGroupId);

    /**
     * 同步指定项目的分支（异步执行）
     *
     * @param externalSystemId 外部系统ID
     * @param repoGroupId 仓库组ID
     * @param repoProjectId 仓库项目ID
     */
    void syncBranches(Long externalSystemId, Long repoGroupId, Long repoProjectId);

    /**
     * 统计指定外部系统下的分支数量
     *
     * @param externalSystemId 外部系统ID
     * @return 分支数量
     */
    Long countByExternalSystemId(Long externalSystemId);

    /**
     * 统计指定项目下的分支数量
     *
     * @param projectId 项目ID
     * @return 分支数量
     */
    Long countByProjectId(Long projectId);
} 