hotfix telemetryService get Id. UDO this when cache table done

This commit is contained in:
Фролов 2021-09-27 16:47:16 +05:00
parent 8d3abf0fed
commit dc156154b0

View File

@ -3,6 +3,7 @@ using AsbCloudApp.Services;
using AsbCloudDb.Model;
using AsbCloudInfrastructure.Services.Cache;
using Mapster;
using System.Linq;
namespace AsbCloudInfrastructure.Services
{
@ -10,11 +11,13 @@ namespace AsbCloudInfrastructure.Services
{
private readonly CacheTable<Telemetry> cacheTelemetry;
private readonly CacheTable<Well> cacheWells;
private readonly IAsbCloudDbContext db;
public TelemetryService(IAsbCloudDbContext db, CacheDb cacheDb)
{
cacheTelemetry = cacheDb.GetCachedTable<Telemetry>((AsbCloudDbContext)db);
cacheWells = cacheDb.GetCachedTable<Well>((AsbCloudDbContext)db);
this.db = db;
}
public int GetOrCreateTemetryIdByUid(string uid)
@ -51,9 +54,25 @@ namespace AsbCloudInfrastructure.Services
return cacheWells.FirstOrDefault(w => w?.IdTelemetry == tele.Id);
}
private Telemetry GetOrCreateTelemetryByUid(string uid)
=> cacheTelemetry.FirstOrDefault(t => t.RemoteUid == uid)
?? cacheTelemetry.Insert(new Telemetry { RemoteUid = uid, });
// TODO: fix cacheTable before uncomment next
//private Telemetry GetOrCreateTelemetryByUid(string uid)
// => cacheTelemetry.FirstOrDefault(t => t.RemoteUid == uid)
// ?? cacheTelemetry.Insert(new Telemetry { RemoteUid = uid, });
private Telemetry GetOrCreateTelemetryByUid(string uid)
{
var telemetry = cacheTelemetry.FirstOrDefault(t => t.RemoteUid == uid);
if (telemetry is not null)
return telemetry;
telemetry = db.Telemetries.OrderBy(t=>t.Info).FirstOrDefault(t => t.RemoteUid == uid);
if (telemetry is not null)
return telemetry;
var newTelemetryEntry = db.Telemetries.Add(new Telemetry { RemoteUid = uid });
db.SaveChanges();
cacheTelemetry.Refresh();
return newTelemetryEntry.Entity;
}
}
}