From ca969c99adb83e888c45ee0604cff16e513baef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Mon, 27 Dec 2021 11:48:23 +0500 Subject: [PATCH] Remove query datesRange from context. Replace source for DatesRange from db to telemetry tracker. --- AsbCloudApp/Services/ITelemetryService.cs | 1 + AsbCloudDb/Model/AsbCloudDbContext.cs | 21 ---------------- AsbCloudDb/Model/IAsbCloudDbContext.cs | 1 - .../Services/MessageService.cs | 22 +++-------------- .../Services/TelemetryDataBaseService.cs | 23 +++--------------- .../Services/TelemetryService.cs | 24 +++++++++++++++++++ 6 files changed, 31 insertions(+), 61 deletions(-) diff --git a/AsbCloudApp/Services/ITelemetryService.cs b/AsbCloudApp/Services/ITelemetryService.cs index 1e7bbebd..0cdd312f 100644 --- a/AsbCloudApp/Services/ITelemetryService.cs +++ b/AsbCloudApp/Services/ITelemetryService.cs @@ -35,5 +35,6 @@ namespace AsbCloudApp.Services Task MergeAsync(int from, int to, CancellationToken token); void SaveRequestDate(string uid, DateTime remoteDate); + Task GetDatesRangeAsync(int idWell, bool isUtc, CancellationToken token = default); } } \ No newline at end of file diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 098bf0cc..ff3abb24 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -467,27 +467,6 @@ namespace AsbCloudDb.Model } - public async Task<(DateTime From, DateTime To)> GetDatesRangeAsync(int idTelemetry, - CancellationToken token = default) - where TEntity : class, ITelemetryData - { - var dbSet = Set(); - - 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> GetDepthToIntervalAsync(int telemetryId, int intervalHoursTimestamp, int workStartTimestamp, double timezoneOffset, CancellationToken token) { diff --git a/AsbCloudDb/Model/IAsbCloudDbContext.cs b/AsbCloudDb/Model/IAsbCloudDbContext.cs index a77c2cdf..9aefc524 100644 --- a/AsbCloudDb/Model/IAsbCloudDbContext.cs +++ b/AsbCloudDb/Model/IAsbCloudDbContext.cs @@ -50,7 +50,6 @@ namespace AsbCloudDb.Model DbSet Set() where TEntity : class; - Task<(DateTime From, DateTime To)> GetDatesRangeAsync(int idTelemetry, CancellationToken token) where T : class, ITelemetryData; Task> GetDepthToIntervalAsync(int telemetryId, int intervalHoursTimestamp, int workStartTimestamp, double timezoneOffset, CancellationToken token); } diff --git a/AsbCloudInfrastructure/Services/MessageService.cs b/AsbCloudInfrastructure/Services/MessageService.cs index bc587415..7cd3e2d9 100644 --- a/AsbCloudInfrastructure/Services/MessageService.cs +++ b/AsbCloudInfrastructure/Services/MessageService.cs @@ -144,26 +144,10 @@ namespace AsbCloudInfrastructure.Services return result; } - public async Task GetMessagesDatesRangeAsync(int idWell, bool isUtc, + [Obsolete("Use telemetryService.GetDatesRangeAsync instead", false)] + public Task 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((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 dtos, CancellationToken token = default) diff --git a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs index b56b047e..8a3024e1 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs @@ -185,27 +185,10 @@ namespace AsbCloudInfrastructure.Services return dtos; } - public virtual async Task GetDataDatesRangeAsync(int idWell, bool isUtc, + [Obsolete("Use telemetryService.GetDatesRangeAsync instead", false)] + public virtual Task 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); diff --git a/AsbCloudInfrastructure/Services/TelemetryService.cs b/AsbCloudInfrastructure/Services/TelemetryService.cs index 69991c1e..5b496a15 100644 --- a/AsbCloudInfrastructure/Services/TelemetryService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryService.cs @@ -75,6 +75,30 @@ namespace AsbCloudInfrastructure.Services return lastTelemetryDate; } + public virtual async Task 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;