package com.microservices.zone.common.service;

import com.microservices.zone.detail.domain.ZoneDetail;
import com.microservices.zone.project.domain.ZoneProject;
import com.microservices.zone.resource.domain.ZoneResourceType;

/**
 * 特色专区异步Service接口
 *
 * @author otto
 * @date 2023-05-09
 */
public interface IZoneAsyncService {
    /**
     * 异步初始化专区数据
     *
     * @param zoneDetail 专区详情
     */
    void asyncInitZoneData(ZoneDetail zoneDetail);

    /**
     * 异步更新该专区下当前资源类型对应的资源更新为目标资源类型
     *
     * @param currentResourceType 当前资源类型
     * @param targetResourceType  目标资源类型
     */
    void asyncUpdateZoneResourceToTargetType(ZoneResourceType currentResourceType, ZoneResourceType targetResourceType);

    /**
     * 自动识别专区资源对应类型
     */
    void asyncUpdateType();

    void initHomePage(ZoneDetail zoneDetail);

    void initCms(ZoneDetail zoneDetail);

    void initProject(ZoneDetail zoneDetail);

    void initMember(ZoneDetail zoneDetail);

    void initPartners(ZoneDetail zoneDetail);

    void initResource(ZoneDetail zoneDetail);

    /**
     * 异步初始化专区项目Gitlink信息
     */
    void initProjectGitlinkInfo();

    void setProjectGitlinkInfoCache(ZoneProject zoneProject);

    void clearZoneProjectSortByScoreCache(ZoneProject zoneProject);
}
