package com.yolo.keyboard.service.appversions;

import java.util.*;
import jakarta.validation.*;
import com.yolo.keyboard.controller.admin.appversions.vo.*;
import com.yolo.keyboard.dal.dataobject.appversions.AppVersionsDO;
import com.yolo.keyboard.framework.common.pojo.PageResult;
import com.yolo.keyboard.framework.common.pojo.PageParam;

/**
 * App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。 Service 接口
 *
 * @author ziin
 */
public interface AppVersionsService {

    /**
     * 创建App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createAppVersions(@Valid AppVersionsSaveReqVO createReqVO);

    /**
     * 更新App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
     *
     * @param updateReqVO 更新信息
     */
    void updateAppVersions(@Valid AppVersionsSaveReqVO updateReqVO);

    /**
     * 删除App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
     *
     * @param id 编号
     */
    void deleteAppVersions(Long id);

    /**
    * 批量删除App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
    *
    * @param ids 编号
    */
    void deleteAppVersionsListByIds(List<Long> ids);

    /**
     * 获得App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
     *
     * @param id 编号
     * @return App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
     */
    AppVersionsDO getAppVersions(Long id);

    /**
     * 获得App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。分页
     *
     * @param pageReqVO 分页查询
     * @return App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。分页
     */
    PageResult<AppVersionsDO> getAppVersionsPage(AppVersionsPageReqVO pageReqVO);

}