using Exam.Infrastructure.Data.Entity;
using Exam.Infrastructure.Data.Interface;
using FluentValidation;
using XF.Domain.Dependency;
using XF.Domain.Entities;

namespace Hotline.Repository.SqlSugar.Exam.Interface
{
    public interface IApiService<TAdd, TUpdate, TEntity> : IDomainService
        where TAdd : IAddRequest
        where TUpdate : IActionRequest
        where TEntity : class, IEntity<string>, new()
    {
        Task<string> AddAsync(TAdd actionRequest, CancellationToken cancellationToken);

        Task AddAsync(List<TAdd> actionRequests, CancellationToken cancellationToken);

        Task UpdateAsync(TUpdate actionRequest, CancellationToken cancellationToken);

        Task UpdateAsync(List<TUpdate> actionRequests, CancellationToken cancellationToken);

        Task DeleteAsync(EntityQueryRequest entityQueryRequest, CancellationToken cancellationToken);

        Task UpdateStatus(List<StatusActionRequest> statusActionRequests, CancellationToken cancellationToken);

    }
}
