using System.Threading.Tasks;
using GxPress.Common.Page;
using GxPress.Request.Analyze;
using GxPress.Request.App.Analyze;
using GxPress.Result.App.Analyze;

namespace GxPress.Service.Interface.Analyze
{
    public interface IAnalyzeService : IService
    {
        /// <summary>
        /// 设置 点赞 转发 收藏
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> SetAnalyzeAsync(AnalyzeRequest request);

        /// <summary>
        /// 是否存在
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> ExistsAsync(AnalyzeRequest request);
        /// <summary>
        /// 条数
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<int> CountAsync(AnalyzeRequest request);

        /// <summary>
        /// 获取文章点赞数据
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<PraisePageResult>> GetPraisePageAsync(PraisePageSearchRequest request);
        /// <summary>
        /// 是否存在
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> ExistsSourceUserAsync(AnalyzeRequest request);
        /// <summary>
        /// 转发数量
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<int> RetransmissionCountAsync(AnalyzeRequest request);

         /// <summary>
        /// 获取
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<Entity.Analyze.Analyze> GetAnalyzeAsync(AnalyzeRequest request);
        Task<bool> DeleteAsync(int id);
    }
}