Remove query datesRange from context.

Replace source for DatesRange from db to telemetry tracker.
This commit is contained in:
Фролов 2021-12-27 11:48:23 +05:00
parent a30c8883a5
commit ca969c99ad
6 changed files with 31 additions and 61 deletions

View File

@ -35,5 +35,6 @@ namespace AsbCloudApp.Services
Task<int> MergeAsync(int from, int to, CancellationToken token);
void SaveRequestDate(string uid, DateTime remoteDate);
Task<DatesRangeDto> GetDatesRangeAsync(int idWell, bool isUtc, CancellationToken token = default);
}
}

View File

@ -467,27 +467,6 @@ namespace AsbCloudDb.Model
}
public async Task<(DateTime From, DateTime To)> GetDatesRangeAsync<TEntity>(int idTelemetry,
CancellationToken token = default)
where TEntity : class, ITelemetryData
{
var dbSet = Set<TEntity>();
var datesRange = await (from m in dbSet
where m.IdTelemetry == idTelemetry
group m by m.IdTelemetry into g
select new
{
From = g.Min(d => d.Date),
To = g.Max(d => d.Date)
}).AsNoTracking().FirstOrDefaultAsync(token);
if (datesRange is null)
return (DateTime.MinValue, DateTime.MaxValue);
return (datesRange.From, datesRange.To);
}
public async Task<IEnumerable<(double? MinDepth, double? MaxDepth, DateTime BeginPeriodDate)>> GetDepthToIntervalAsync(int telemetryId,
int intervalHoursTimestamp, int workStartTimestamp, double timezoneOffset, CancellationToken token)
{

View File

@ -50,7 +50,6 @@ namespace AsbCloudDb.Model
DbSet<TEntity> Set<TEntity>() where TEntity : class;
Task<(DateTime From, DateTime To)> GetDatesRangeAsync<T>(int idTelemetry, CancellationToken token) where T : class, ITelemetryData;
Task<IEnumerable<(double? MinDepth, double? MaxDepth, DateTime BeginPeriodDate)>> GetDepthToIntervalAsync(int telemetryId,
int intervalHoursTimestamp, int workStartTimestamp, double timezoneOffset, CancellationToken token);
}

View File

@ -144,26 +144,10 @@ namespace AsbCloudInfrastructure.Services
return result;
}
public async Task<DatesRangeDto> GetMessagesDatesRangeAsync(int idWell, bool isUtc,
[Obsolete("Use telemetryService.GetDatesRangeAsync instead", false)]
public Task<DatesRangeDto> GetMessagesDatesRangeAsync(int idWell, bool isUtc,
CancellationToken token = default)
{
var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
if (telemetryId is null)
return null;
var (From, To) = await db.GetDatesRangeAsync<TelemetryMessage>((int)telemetryId, token)
.ConfigureAwait(false);
var result = new DatesRangeDto { From = From, To = To };
if (isUtc)
return result;
result = await telemetryService.DatesRangeToTelemetryTimeZoneAsync((int)telemetryId, result, token)
.ConfigureAwait(false);
return result;
}
=> telemetryService.GetDatesRangeAsync(idWell, isUtc, token);
public Task InsertAsync(string uid, IEnumerable<TelemetryMessageDto> dtos,
CancellationToken token = default)

View File

@ -185,27 +185,10 @@ namespace AsbCloudInfrastructure.Services
return dtos;
}
public virtual async Task<DatesRangeDto> GetDataDatesRangeAsync(int idWell, bool isUtc,
[Obsolete("Use telemetryService.GetDatesRangeAsync instead", false)]
public virtual Task<DatesRangeDto> GetDataDatesRangeAsync(int idWell, bool isUtc,
CancellationToken token = default)
{
var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
if (telemetryId is null)
return null;
var telemetry = await cacheTelemetry.FirstOrDefaultAsync(t => t.Id == telemetryId, token)
.ConfigureAwait(false);
var dto = telemetryService.TelemetryTracker.GetTelemetryDateRangeByUid(telemetry.RemoteUid);
if (isUtc)
return dto;
dto = await telemetryService.DatesRangeToTelemetryTimeZoneAsync((int)telemetryId, dto, token)
.ConfigureAwait(false);
return dto;
}
=> telemetryService.GetDatesRangeAsync(idWell, isUtc, token);
public abstract TDto Convert(TModel src);

View File

@ -75,6 +75,30 @@ namespace AsbCloudInfrastructure.Services
return lastTelemetryDate;
}
public virtual async Task<DatesRangeDto> GetDatesRangeAsync(
int idWell,
bool isUtc,
CancellationToken token = default)
{
var telemetryId = GetIdTelemetryByIdWell(idWell);
if (telemetryId is null)
return null;
var telemetry = await cacheTelemetry.FirstOrDefaultAsync(t => t.Id == telemetryId, token)
.ConfigureAwait(false);
var dto = TelemetryTracker.GetTelemetryDateRangeByUid(telemetry.RemoteUid);
if (isUtc)
return dto;
dto = await DatesRangeToTelemetryTimeZoneAsync((int)telemetryId, dto, token)
.ConfigureAwait(false);
return dto;
}
public int GetOrCreateTelemetryIdByUid(string uid)
=> GetOrCreateTelemetryByUid(uid).Id;