using PARR.DAL.Models; namespace PARR.EsppSync { /// /// Делегат парсинга из строки в модель EsppObject /// /// /// /// public delegate EsppObject? ParseStringToEsppObject(string str) where EsppObject : class, IEsppObject; /// /// Конвертирует Template в модель для сравнения /// /// /// /// public delegate EsppObject ConvertDbToEsppObject(Template template) where EsppObject : class, IEsppObject; /// /// Дополнительная проверка полей, если проверка прошла, то true /// /// /// /// /// /// true - проверка пройдена, false - проверка не пройдена public delegate Task CustomComparisionCheckAsync(EsppObject esppObject, EsppObject dbObject, Guid templateId) where EsppObject : class, IEsppObject; /// /// Выполнить произвольную логику после парсинга строки в объект ЕСПП /// /// /// /// public delegate Task AfterParseStringToEsppObjectAsync(EsppObject esppObject) where EsppObject : class, IEsppObject; public interface ISyncService where EsppObject : class, IEsppObject { /// /// Синхронизировать объекты /// /// Строка из RabbitMQ /// Делегат парсинга из строки в модель EsppObject /// Конвертирует BD Template в модель для сравнения /// Кастомное сравнение полей /// Выполнить произвольный метод после парсинга строки в модель EsppObject /// Task SyncEsppObjectAsync(string str, ParseStringToEsppObject parseStringToEsppObject, ConvertDbToEsppObject converterDbToEsppObject, CustomComparisionCheckAsync? customComparisionAsync = null, AfterParseStringToEsppObjectAsync? afterParseStringToEsppObjectAsync = null ); } }