using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Datory;
using GxPress.Request.App.WaitHandle;
using GxPress.Result.App.WaitHandle;
using SqlKata;

namespace GxPress.Repository.Interface.WaitHandle
{
    public interface IWaitHandleRepository : IRepository
    {
        Task<int> InsertAsync(Entity.WaitHandle.WaitHandle waitHandle);

        Task<bool> UpdateAsync(Entity.WaitHandle.WaitHandle waitHandle);

        Task<bool> UpdateAsync(Query query);

        Task<bool> DeleteAsync(int id);

        Task<bool> DeleteAsync(Query query);


        Task<Entity.WaitHandle.WaitHandle> GetAsync(Query query);

        Task<Entity.WaitHandle.WaitHandle> GetAsync(int id);


        Task<IEnumerable<Entity.WaitHandle.WaitHandle>> GetAllAsync(Query query);

        Task<int> CountAsync(Query query);

        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<WaitHandleListResult> GetAllAsync(ListWaitHandleRequest request);

        Task<int> GetUFinishAsync(int userId);

        /// <summary>
        /// 获取详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Entity.WaitHandle.WaitHandle> GetWaitAsync(int id);
    }
}