forked from ddrilling/AsbCloudServer
EventService, MessageService, TelemetryUserService uses new cache model.
This commit is contained in:
parent
62809a76cf
commit
0ac16d37e9
@ -1,10 +1,12 @@
|
||||
using AsbCloudApp.Data.SAUB;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface ITelemetryUserService
|
||||
{
|
||||
void Upsert(string uid, IEnumerable<TelemetryUserDto> dtos);
|
||||
Task UpsertAsync(string uid, IEnumerable<TelemetryUserDto> dtos, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
using AsbCloudApp.Data.SAUB;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.Services.Cache;
|
||||
using AsbCloudInfrastructure.EfCache;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
@ -11,13 +12,13 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
||||
{
|
||||
public class EventService : IEventService
|
||||
{
|
||||
private readonly IAsbCloudDbContext db;
|
||||
private readonly ITelemetryService telemetryService;
|
||||
private readonly CacheTable<TelemetryEvent> cacheEvents;
|
||||
|
||||
public EventService(IAsbCloudDbContext db, CacheDb cacheDb, ITelemetryService telemetryService)
|
||||
public EventService(IAsbCloudDbContext db, ITelemetryService telemetryService)
|
||||
{
|
||||
this.db = db;
|
||||
this.telemetryService = telemetryService;
|
||||
cacheEvents = cacheDb.GetCachedTable<TelemetryEvent>((AsbCloudDbContext)db);
|
||||
}
|
||||
|
||||
public async Task UpsertAsync(string uid, IEnumerable<EventDto> dtos,
|
||||
@ -35,8 +36,8 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
||||
IdCategory = dto.IdCategory,
|
||||
MessageTemplate = dto.Message
|
||||
});
|
||||
await cacheEvents.UpsertAsync(entities, token)
|
||||
.ConfigureAwait(false);
|
||||
var result = await db.Database.ExecInsertOrUpdateAsync(db.TelemetryEvents, entities, token);
|
||||
db.TelemetryEvents.DropCache();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
using AsbCloudApp.Data.SAUB;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.Services.Cache;
|
||||
using AsbCloudInfrastructure.EfCache;
|
||||
using Mapster;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
@ -17,15 +17,11 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
||||
{
|
||||
private readonly IAsbCloudDbContext db;
|
||||
private readonly ITelemetryService telemetryService;
|
||||
private readonly CacheTable<TelemetryEvent> cacheEvents;
|
||||
private readonly CacheTable<TelemetryUser> cacheTUsers;
|
||||
|
||||
public MessageService(IAsbCloudDbContext db, CacheDb cacheDb, ITelemetryService telemetryService)
|
||||
public MessageService(IAsbCloudDbContext db, ITelemetryService telemetryService)
|
||||
{
|
||||
this.db = db;
|
||||
this.telemetryService = telemetryService;
|
||||
cacheEvents = cacheDb.GetCachedTable<TelemetryEvent>((AsbCloudDbContext)db);
|
||||
cacheTUsers = cacheDb.GetCachedTable<TelemetryUser>((AsbCloudDbContext)db);
|
||||
}
|
||||
|
||||
public async Task<PaginationContainer<MessageDto>> GetMessagesAsync(
|
||||
@ -42,7 +38,8 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
||||
if (idTelemetry is null)
|
||||
return null;
|
||||
|
||||
var events = cacheEvents.Where(e => e.IdTelemetry == idTelemetry);
|
||||
var allEvents = await db.TelemetryEvents.FromCacheAsync(token);
|
||||
var events = allEvents.Where(e => e.IdTelemetry == idTelemetry);
|
||||
|
||||
if (!events.Any())
|
||||
return null;
|
||||
@ -98,7 +95,8 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
||||
if (messagesList.Count == 0)
|
||||
return result;
|
||||
|
||||
var users = cacheTUsers.Where(u => u.IdTelemetry == idTelemetry);
|
||||
var allUsers = await db.TelemetryUsers.FromCacheAsync(token);
|
||||
var users = allUsers.Where(u => u.IdTelemetry == idTelemetry);
|
||||
|
||||
foreach (var message in messagesList)
|
||||
{
|
||||
|
@ -1,25 +1,29 @@
|
||||
using AsbCloudApp.Comparators;
|
||||
using AsbCloudApp.Data.SAUB;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.EfCache;
|
||||
using AsbCloudInfrastructure.Services.Cache;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services.SAUB
|
||||
{
|
||||
public class TelemetryUserService : ITelemetryUserService
|
||||
{
|
||||
private readonly IAsbCloudDbContext db;
|
||||
private readonly ITelemetryService telemetryService;
|
||||
private readonly CacheTable<TelemetryUser> cacheTelemetryUsers;
|
||||
|
||||
public TelemetryUserService(IAsbCloudDbContext db, CacheDb cacheDb, ITelemetryService telemetryService)
|
||||
public TelemetryUserService(IAsbCloudDbContext db, ITelemetryService telemetryService)
|
||||
{
|
||||
this.db = db;
|
||||
this.telemetryService = telemetryService;
|
||||
cacheTelemetryUsers = cacheDb.GetCachedTable<TelemetryUser>((AsbCloudDbContext)db);
|
||||
}
|
||||
|
||||
public void Upsert(string uid, IEnumerable<TelemetryUserDto> dtos)
|
||||
public async Task UpsertAsync(string uid, IEnumerable<TelemetryUserDto> dtos, CancellationToken token = default)
|
||||
{
|
||||
if (!dtos.Any())
|
||||
return;
|
||||
@ -35,7 +39,8 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
||||
Patronymic = dto.Patronymic,
|
||||
Surname = dto.Surname,
|
||||
});
|
||||
cacheTelemetryUsers.Upsert(entities);
|
||||
var result = await db.Database.ExecInsertOrUpdateAsync(db.TelemetryUsers, entities, token);
|
||||
db.TelemetryUsers.DropCache();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ public class EventServiceTest
|
||||
var telemetryTracker = new Mock<ITelemetryTracker>();
|
||||
var imezoneServiceMock = new Mock<ITimezoneService>();
|
||||
var telemetryService = new TelemetryService(context, telemetryTracker.Object, imezoneServiceMock.Object, cacheDb);
|
||||
service = new EventService(context, cacheDb, telemetryService);
|
||||
service = new EventService(context, telemetryService);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -48,7 +48,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
|
||||
[HttpPost]
|
||||
[Route("{uid}/info")]
|
||||
public async Task<IActionResult> PostInfoAsync(string uid, [FromBody] TelemetryInfoDto info,
|
||||
CancellationToken token = default)
|
||||
CancellationToken token)
|
||||
{
|
||||
await telemetryService.UpdateInfoAsync(uid, info, token).ConfigureAwait(false);
|
||||
return Ok();
|
||||
@ -64,7 +64,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
|
||||
[HttpPost]
|
||||
[Route("{uid}/timezone")]
|
||||
public async Task<IActionResult> UpdateTimeZoneAsync(string uid, SimpleTimezoneDto timezone,
|
||||
CancellationToken token = default)
|
||||
CancellationToken token)
|
||||
{
|
||||
await telemetryService.UpdateTimezoneAsync(uid, timezone, token)
|
||||
.ConfigureAwait(false);
|
||||
@ -81,7 +81,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
|
||||
[HttpPost]
|
||||
[Route("{uid}/message")]
|
||||
public async Task<IActionResult> PostMessagesAsync(string uid, [FromBody] IEnumerable<TelemetryMessageDto> dtos,
|
||||
CancellationToken token = default)
|
||||
CancellationToken token)
|
||||
{
|
||||
var idWell = telemetryService.GetIdWellByTelemetryUid(uid);
|
||||
await messageService.InsertAsync(uid, dtos, token).ConfigureAwait(false);
|
||||
@ -103,7 +103,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
|
||||
[HttpPost]
|
||||
[Route("{uid}/event")]
|
||||
public async Task<IActionResult> PostEventsAsync(string uid, [FromBody] List<EventDto> events,
|
||||
CancellationToken token = default)
|
||||
CancellationToken token)
|
||||
{
|
||||
await eventService.UpsertAsync(uid, events, token)
|
||||
.ConfigureAwait(false);
|
||||
@ -115,12 +115,14 @@ namespace AsbCloudWebApi.Controllers.SAUB
|
||||
/// </summary>
|
||||
/// <param name="uid">Уникальный идентификатор отправителя</param>
|
||||
/// <param name="users">справочник пользователей телеметрии</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("{uid}/user")]
|
||||
public IActionResult PostUsers(string uid, [FromBody] List<TelemetryUserDto> users)
|
||||
public async Task<IActionResult> PostUsersAsync(string uid, [FromBody] List<TelemetryUserDto> users,
|
||||
CancellationToken token)
|
||||
{
|
||||
telemetryUserService.Upsert(uid, users);
|
||||
await telemetryUserService.UpsertAsync(uid, users, token);
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user