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

import com.qqchen.deploy.backend.deploy.dto.RepositoryProjectDTO;
import com.qqchen.deploy.backend.deploy.entity.RepositoryProject;
import com.qqchen.deploy.backend.deploy.query.RepositoryProjectQuery;
import com.qqchen.deploy.backend.framework.service.IBaseService;

import java.util.List;

/**
 * Git仓库项目服务接口
 */
public interface IRepositoryProjectService extends IBaseService<RepositoryProject, RepositoryProjectDTO, RepositoryProjectQuery, Long> {

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

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

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

    List<RepositoryProjectDTO> findByExternalSystemId(Long externalSystemId);
}