using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; using AsbCloudApp.Requests; using AsbCloudApp.Services; namespace AsbCloudApp.Repositories; /// <summary> /// репозиторий по работе с faq-вопросами /// </summary> public interface IFaqRepository { /// <summary> /// Получить список вопросов /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<FaqDto>> GetFilteredAsync(FaqRequest request, CancellationToken token); /// <summary> /// Добавить вопрос /// </summary> /// <param name="faqDto"></param> /// <param name="token"></param> /// <returns></returns> Task<int> InsertAsync(FaqDto faqDto, CancellationToken token); /// <summary> /// Обновить существующий вопрос /// </summary> /// <param name="dto"></param> /// <param name="token"></param> /// <returns></returns> Task<int> UpdateAsync(FaqDto dto, CancellationToken token); /// <summary> /// Объединить 2 вопроса в 1 /// </summary> /// <param name="sourceId1">ключ первого вопроса, подлежащего объединению</param> /// <param name="sourceId2">ключ второго вопроса, подлежащего объединению</param> /// <param name="mergeQuestions">Флаг, объединять текст вопросов или нет</param> /// <param name="token"></param> /// <returns></returns> Task<int> MergeAsync(int sourceId1, int sourceId2, bool mergeQuestions, CancellationToken token); /// <summary> /// Пометить вопрос по id как удаленный /// </summary> /// <param name="id"></param> /// <param name="token"></param> /// <returns></returns> Task<int> MarkAsDeletedAsync(int id, CancellationToken token); /// <summary> /// Удалить вопрос по ключу /// </summary> /// <param name="id"></param> /// <param name="token"></param> /// <returns></returns> Task<int> DeleteAsync(int id, CancellationToken token); }