Правки по результатам ревью
This commit is contained in:
parent
c589cbcd0d
commit
10aa5dd36f
@ -82,7 +82,7 @@ public class TechMessagesController : ControllerBase
|
||||
{
|
||||
var result = await techMessagesRepository.GetDatesRangeAsync(token);
|
||||
|
||||
return Ok(result);
|
||||
return result == null ? NoContent() : Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -16,7 +16,7 @@ public class ChangeLogClient : BaseClient, IChangeLogClient
|
||||
|
||||
public async Task<int> ClearAndAddRange(Guid idDiscriminator, IEnumerable<DataWithWellDepthAndSectionDto> dtos, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<int>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitChangeLogClient.ClearAndAddRange(idDiscriminator, dtos, token), token);
|
||||
|
||||
return result;
|
||||
@ -25,7 +25,7 @@ public class ChangeLogClient : BaseClient, IChangeLogClient
|
||||
public async Task<PaginationContainer<DataWithWellDepthAndSectionDto>> GetByDate(Guid idDiscriminator, DateTimeOffset moment,
|
||||
SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<PaginationContainer<DataWithWellDepthAndSectionDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitChangeLogClient.GetByDate(idDiscriminator, moment, filterRequest, paginationRequest, token), token);
|
||||
|
||||
return result;
|
||||
@ -33,7 +33,7 @@ public class ChangeLogClient : BaseClient, IChangeLogClient
|
||||
|
||||
public async Task<IEnumerable<ChangeLogDto>> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<ChangeLogDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitChangeLogClient.GetChangeLogForInterval(idDiscriminator, dateBegin, dateEnd, token), token);
|
||||
|
||||
return result;
|
||||
@ -89,7 +89,7 @@ public class ChangeLogClient : BaseClient, IChangeLogClient
|
||||
|
||||
public async Task<DatesRangeDto?> GetDatesRange(Guid idDiscriminator, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<DatesRangeDto?>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitChangeLogClient.GetDatesRange(idDiscriminator, token), token);
|
||||
|
||||
return result;
|
||||
@ -98,5 +98,7 @@ public class ChangeLogClient : BaseClient, IChangeLogClient
|
||||
public void Dispose()
|
||||
{
|
||||
refitChangeLogClient.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ public class DataSourceSystemClient : BaseClient, IDataSourceSystemClient
|
||||
|
||||
public async Task<IEnumerable<DataSourceSystemDto>> Get(CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<DataSourceSystemDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await dataSourceSystemClient.Get(token), token);
|
||||
|
||||
return result;
|
||||
@ -31,5 +31,7 @@ public class DataSourceSystemClient : BaseClient, IDataSourceSystemClient
|
||||
public void Dispose()
|
||||
{
|
||||
dataSourceSystemClient.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ public interface ITechMessagesClient : IDisposable
|
||||
/// Получить статистику по системам
|
||||
/// </summary>
|
||||
/// <param name="systemIds"></param>
|
||||
/// <param name="categoryId"></param>
|
||||
/// <param name="categoryIds"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<MessagesStatisticDto>> GetStatistics(IEnumerable<Guid> systemIds, IEnumerable<int> categoryIds, CancellationToken token);
|
||||
|
@ -25,6 +25,6 @@ namespace Persistence.Client.Clients.Interfaces.Refit
|
||||
Task<IApiResponse<IEnumerable<TechMessageDto>>> GetPart(DateTimeOffset dateBegin, int take, CancellationToken token);
|
||||
|
||||
[Get($"{BaseRoute}/statistics")]
|
||||
Task<IApiResponse<IEnumerable<MessagesStatisticDto>>> GetStatistics([Query] IEnumerable<Guid> systemIds, [Query] IEnumerable<int> categoryIds, CancellationToken token);
|
||||
Task<IApiResponse<IEnumerable<MessagesStatisticDto>>> GetStatistics([Query(CollectionFormat.Multi)] IEnumerable<Guid> systemIds, [Query(CollectionFormat.Multi)] IEnumerable<int> categoryIds, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ public class SetpointClient : BaseClient, ISetpointClient
|
||||
|
||||
public async Task<IEnumerable<SetpointValueDto>> GetCurrent(IEnumerable<Guid> setpointKeys, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<SetpointValueDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitSetpointClient.GetCurrent(setpointKeys, token), token);
|
||||
|
||||
return result;
|
||||
@ -25,7 +25,7 @@ public class SetpointClient : BaseClient, ISetpointClient
|
||||
|
||||
public async Task<IEnumerable<SetpointValueDto>> GetHistory(IEnumerable<Guid> setpointKeys, DateTimeOffset historyMoment, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<SetpointValueDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitSetpointClient.GetHistory(setpointKeys, historyMoment, token), token);
|
||||
|
||||
return result;
|
||||
@ -33,7 +33,7 @@ public class SetpointClient : BaseClient, ISetpointClient
|
||||
|
||||
public async Task<Dictionary<Guid, IEnumerable<SetpointLogDto>>> GetLog(IEnumerable<Guid> setpointKeys, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<Dictionary<Guid, IEnumerable<SetpointLogDto>>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitSetpointClient.GetLog(setpointKeys, token), token);
|
||||
|
||||
return result;
|
||||
@ -41,7 +41,7 @@ public class SetpointClient : BaseClient, ISetpointClient
|
||||
|
||||
public async Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<DatesRangeDto>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitSetpointClient.GetDatesRangeAsync(token), token);
|
||||
|
||||
return result;
|
||||
@ -49,7 +49,7 @@ public class SetpointClient : BaseClient, ISetpointClient
|
||||
|
||||
public async Task<IEnumerable<SetpointLogDto>> GetPart(DateTimeOffset dateBegin, int take, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<SetpointLogDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitSetpointClient.GetPart(dateBegin, take, token), token);
|
||||
|
||||
return result;
|
||||
@ -64,5 +64,7 @@ public class SetpointClient : BaseClient, ISetpointClient
|
||||
public void Dispose()
|
||||
{
|
||||
refitSetpointClient.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ public class TechMessagesClient : BaseClient, ITechMessagesClient
|
||||
|
||||
public async Task<PaginationContainer<TechMessageDto>> GetPage(PaginationRequest request, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<PaginationContainer<TechMessageDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTechMessagesClient.GetPage(request, token), token);
|
||||
|
||||
return result;
|
||||
@ -34,7 +34,7 @@ public class TechMessagesClient : BaseClient, ITechMessagesClient
|
||||
|
||||
public async Task<IEnumerable<DataSourceSystemDto>> GetSystems(CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<DataSourceSystemDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTechMessagesClient.GetSystems(token), token);
|
||||
|
||||
return result;
|
||||
@ -42,7 +42,7 @@ public class TechMessagesClient : BaseClient, ITechMessagesClient
|
||||
|
||||
public async Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<DatesRangeDto>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTechMessagesClient.GetDatesRangeAsync(token), token);
|
||||
|
||||
return result;
|
||||
@ -50,7 +50,7 @@ public class TechMessagesClient : BaseClient, ITechMessagesClient
|
||||
|
||||
public async Task<IEnumerable<TechMessageDto>> GetPart(DateTimeOffset dateBegin, int take, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<TechMessageDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTechMessagesClient.GetPart(dateBegin, take, token), token);
|
||||
|
||||
return result;
|
||||
@ -58,7 +58,7 @@ public class TechMessagesClient : BaseClient, ITechMessagesClient
|
||||
|
||||
public async Task<IEnumerable<MessagesStatisticDto>> GetStatistics(IEnumerable<Guid> systemIds, IEnumerable<int> categoryIds, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<MessagesStatisticDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTechMessagesClient.GetStatistics(systemIds, categoryIds, token), token);
|
||||
|
||||
return result;
|
||||
@ -67,5 +67,7 @@ public class TechMessagesClient : BaseClient, ITechMessagesClient
|
||||
public void Dispose()
|
||||
{
|
||||
refitTechMessagesClient.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ public class TimeSeriesClient<TDto> : BaseClient, ITimeSeriesClient<TDto> where
|
||||
|
||||
public async Task<IEnumerable<TDto>> Get(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<TDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await timeSeriesClient.Get(dateBegin, dateEnd, token), token);
|
||||
|
||||
return result;
|
||||
@ -32,7 +32,7 @@ public class TimeSeriesClient<TDto> : BaseClient, ITimeSeriesClient<TDto> where
|
||||
|
||||
public async Task<IEnumerable<TDto>> GetResampledData(DateTimeOffset dateBegin, double intervalSec = 600d, int approxPointsCount = 1024, CancellationToken token = default)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<TDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await timeSeriesClient.GetResampledData(dateBegin, intervalSec, approxPointsCount, token), token);
|
||||
|
||||
return result;
|
||||
@ -40,7 +40,7 @@ public class TimeSeriesClient<TDto> : BaseClient, ITimeSeriesClient<TDto> where
|
||||
|
||||
public async Task<DatesRangeDto?> GetDatesRange(CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<DatesRangeDto?>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await timeSeriesClient.GetDatesRange(token), token);
|
||||
|
||||
return result;
|
||||
@ -49,5 +49,7 @@ public class TimeSeriesClient<TDto> : BaseClient, ITimeSeriesClient<TDto> where
|
||||
public void Dispose()
|
||||
{
|
||||
timeSeriesClient.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ public class TimestampedSetClient : BaseClient, ITimestampedSetClient
|
||||
|
||||
public async Task<IEnumerable<TimestampedSetDto>> Get(Guid idDiscriminator, DateTimeOffset? geTimestamp, IEnumerable<string>? columnNames, int skip, int take, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<TimestampedSetDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTimestampedSetClient.Get(idDiscriminator, geTimestamp, columnNames, skip, take, token), token);
|
||||
|
||||
return result;
|
||||
@ -32,7 +32,7 @@ public class TimestampedSetClient : BaseClient, ITimestampedSetClient
|
||||
|
||||
public async Task<IEnumerable<TimestampedSetDto>> GetLast(Guid idDiscriminator, IEnumerable<string>? columnNames, int take, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<TimestampedSetDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTimestampedSetClient.GetLast(idDiscriminator, columnNames, take, token), token);
|
||||
|
||||
return result;
|
||||
@ -40,7 +40,7 @@ public class TimestampedSetClient : BaseClient, ITimestampedSetClient
|
||||
|
||||
public async Task<int> Count(Guid idDiscriminator, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<int>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTimestampedSetClient.Count(idDiscriminator, token), token);
|
||||
|
||||
return result;
|
||||
@ -48,7 +48,7 @@ public class TimestampedSetClient : BaseClient, ITimestampedSetClient
|
||||
|
||||
public async Task<DatesRangeDto?> GetDatesRange(Guid idDiscriminator, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<DatesRangeDto?>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitTimestampedSetClient.GetDatesRange(idDiscriminator, token), token);
|
||||
|
||||
return result;
|
||||
@ -57,5 +57,7 @@ public class TimestampedSetClient : BaseClient, ITimestampedSetClient
|
||||
public void Dispose()
|
||||
{
|
||||
refitTimestampedSetClient.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ public class WitsDataClient : BaseClient, IWitsDataClient
|
||||
|
||||
public async Task<DatesRangeDto> GetDatesRangeAsync(Guid discriminatorId, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<DatesRangeDto>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitWitsDataClient.GetDatesRangeAsync(discriminatorId, token), token);
|
||||
|
||||
return result;
|
||||
@ -32,7 +32,7 @@ public class WitsDataClient : BaseClient, IWitsDataClient
|
||||
|
||||
public async Task<IEnumerable<WitsDataDto>> GetPart(Guid discriminatorId, DateTimeOffset dateBegin, int take = 86400, CancellationToken token = default)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<WitsDataDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitWitsDataClient.GetPart(discriminatorId, dateBegin, take, token), token);
|
||||
|
||||
return result;
|
||||
@ -40,7 +40,7 @@ public class WitsDataClient : BaseClient, IWitsDataClient
|
||||
|
||||
public async Task<IEnumerable<WitsDataDto>> GetValuesForGraph(Guid discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, CancellationToken token)
|
||||
{
|
||||
var result = await ExecuteGetResponse<IEnumerable<WitsDataDto>>(
|
||||
var result = await ExecuteGetResponse(
|
||||
async () => await refitWitsDataClient.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointsCount, token), token);
|
||||
|
||||
return result;
|
||||
@ -49,5 +49,7 @@ public class WitsDataClient : BaseClient, IWitsDataClient
|
||||
public void Dispose()
|
||||
{
|
||||
refitWitsDataClient.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
try
|
||||
{
|
||||
//act
|
||||
var response = await techMessagesClient.AddRange(systemId, dtos, new CancellationToken());
|
||||
var response = await techMessagesClient.AddRange(systemId, dtos, CancellationToken.None);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -114,7 +114,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
//arrange
|
||||
memoryCache.Remove(SystemCacheKey);
|
||||
dbContext.CleanupDbSet<TechMessage>();
|
||||
dbContext.CleanupDbSet<Database.Entity.DataSourceSystem>();
|
||||
dbContext.CleanupDbSet<DataSourceSystem>();
|
||||
|
||||
//act
|
||||
var response = await techMessagesClient.GetSystems(CancellationToken.None);
|
||||
@ -128,7 +128,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
public async Task GetSystems_AfterSave_returns_success()
|
||||
{
|
||||
//arrange
|
||||
var dtos = await InsertRange(Guid.NewGuid());
|
||||
await InsertRange(Guid.NewGuid());
|
||||
|
||||
//act
|
||||
var response = await techMessagesClient.GetSystems(CancellationToken.None);
|
||||
@ -145,13 +145,13 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
//arrange
|
||||
memoryCache.Remove(SystemCacheKey);
|
||||
dbContext.CleanupDbSet<TechMessage>();
|
||||
dbContext.CleanupDbSet<Database.Entity.DataSourceSystem>();
|
||||
dbContext.CleanupDbSet<DataSourceSystem>();
|
||||
|
||||
var imortantIds = new [] { 1 };
|
||||
var categoryIds = new [] { 1, 2 };
|
||||
var systemIds = new [] { Guid.NewGuid() };
|
||||
|
||||
//act
|
||||
var response = await techMessagesClient.GetStatistics(systemIds, imortantIds, CancellationToken.None);
|
||||
var response = await techMessagesClient.GetStatistics(systemIds, categoryIds, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
Assert.NotNull(response);
|
||||
|
@ -8,6 +8,7 @@ public class DataSourceSystemCachedRepository : DataSourceSystemRepository
|
||||
private static readonly string SystemCacheKey = $"{typeof(Database.Entity.DataSourceSystem).FullName}CacheKey";
|
||||
private readonly IMemoryCache memoryCache;
|
||||
private const int CacheExpirationInMinutes = 60;
|
||||
private readonly TimeSpan? AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(60);
|
||||
|
||||
public DataSourceSystemCachedRepository(DbContext db, IMemoryCache memoryCache) : base(db)
|
||||
{
|
||||
@ -19,11 +20,12 @@ public class DataSourceSystemCachedRepository : DataSourceSystemRepository
|
||||
|
||||
memoryCache.Remove(SystemCacheKey);
|
||||
}
|
||||
|
||||
public override async Task<IEnumerable<DataSourceSystemDto>> Get(CancellationToken token)
|
||||
{
|
||||
var systems = await memoryCache.GetOrCreateAsync(SystemCacheKey, async f =>
|
||||
var systems = await memoryCache.GetOrCreateAsync(SystemCacheKey, async (cacheEntry) =>
|
||||
{
|
||||
cacheEntry.AbsoluteExpirationRelativeToNow = AbsoluteExpirationRelativeToNow;
|
||||
|
||||
var dtos = await base.Get(token);
|
||||
|
||||
return dtos;
|
||||
|
@ -25,14 +25,14 @@ public class DataSourceSystemRepository : IDataSourceSystemRepository
|
||||
{
|
||||
var entity = dataSourceSystemDto.Adapt<DataSourceSystem>();
|
||||
|
||||
await db.Set<DataSourceSystem>().AddAsync(entity);
|
||||
await db.Set<DataSourceSystem>().AddAsync(entity, token);
|
||||
await db.SaveChangesAsync(token);
|
||||
}
|
||||
|
||||
public virtual async Task<IEnumerable<DataSourceSystemDto>> Get(CancellationToken token)
|
||||
{
|
||||
var query = GetQueryReadOnly();
|
||||
var entities = await query.ToListAsync(token);
|
||||
var entities = await query.ToArrayAsync(token);
|
||||
var dtos = entities.Select(e => e.Adapt<DataSourceSystemDto>());
|
||||
|
||||
return dtos;
|
||||
|
@ -53,10 +53,10 @@ namespace Persistence.Repository.Repositories
|
||||
{
|
||||
var query = GetQueryReadOnly();
|
||||
var result = await query
|
||||
.Where(e => systems.Count() == 0 || systems.Contains(e.System.SystemId))
|
||||
.GroupBy(e => e.System.Name, (key, group) => new
|
||||
.Where(e => !systems.Any() || systems.Contains(e.System.SystemId))
|
||||
.GroupBy(e => e.System.SystemId, (key, group) => new
|
||||
{
|
||||
System = key,
|
||||
System = group.FirstOrDefault()!.System.Name,
|
||||
Categories = group
|
||||
.Where(g => categoryIds.Count() == 0 || categoryIds.Contains(g.CategoryId))
|
||||
})
|
||||
@ -81,6 +81,7 @@ namespace Persistence.Repository.Repositories
|
||||
|
||||
public async Task<int> AddRange(Guid systemId, IEnumerable<TechMessageDto> dtos, Guid userId, CancellationToken token)
|
||||
{
|
||||
await CreateSystemIfNotExist(systemId, token);
|
||||
|
||||
var entities = new List<TechMessage>();
|
||||
foreach (var dto in dtos)
|
||||
@ -88,6 +89,7 @@ namespace Persistence.Repository.Repositories
|
||||
var entity = dto.Adapt<TechMessage>();
|
||||
|
||||
await CreateSystemIfNotExist(systemId, token);
|
||||
|
||||
entity.SystemId = systemId;
|
||||
|
||||
entities.Add(entity);
|
||||
@ -116,7 +118,7 @@ namespace Persistence.Repository.Repositories
|
||||
{
|
||||
var systems = await sourceSystemRepository.Get(token);
|
||||
|
||||
return systems ?? [];
|
||||
return systems!;
|
||||
}
|
||||
|
||||
public async Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token)
|
||||
|
@ -3,7 +3,7 @@
|
||||
namespace Persistence.Repositories;
|
||||
|
||||
/// <summary>
|
||||
/// Интерфейс по работе с системами
|
||||
/// Интерфейс по работе с системами - источниками данных
|
||||
/// </summary>
|
||||
public interface IDataSourceSystemRepository
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user