Правка по результатам ревью
This commit is contained in:
parent
523c15093f
commit
4b7f55c3c8
@ -1,13 +1,12 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using DD.Persistence.Models;
|
||||
using DD.Persistence.Models.Requests;
|
||||
using DD.Persistence.Repositories;
|
||||
using System.Net;
|
||||
using DD.Persistence.Models.Common;
|
||||
using DD.Persistence.API;
|
||||
using DD.Persistence.API.Services;
|
||||
|
||||
namespace DD.Persistence.API.Controllers;
|
||||
using DD.Persistence.Models;
|
||||
using DD.Persistence.Models.Common;
|
||||
using DD.Persistence.Models.Requests;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Net;
|
||||
using UuidExtensions;
|
||||
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
@ -34,7 +33,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
||||
CancellationToken token)
|
||||
{
|
||||
var userId = User.GetUserId<Guid>();
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
|
||||
var changeLogCommit = new ChangeLogCommitDto(Uuid7.Guid(), comment);
|
||||
var result = await service.AddRange(idDiscriminator, changeLogCommit, dtos, token);
|
||||
|
||||
return CreatedAtAction(nameof(AddRange), result);
|
||||
|
@ -34,7 +34,7 @@ public class ChangeLogService
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Создание или чтение данных коммита
|
||||
/// Чтение ключа коммита из кеша или (если коммита в кеше нет) создание коммита
|
||||
/// </summary>
|
||||
/// <param name="commitDto"></param>
|
||||
/// <param name="token"></param>
|
||||
|
@ -19,9 +19,6 @@ public class ChangeLog : IDiscriminatorItem, IChangeLog
|
||||
[Comment("Дискриминатор таблицы")]
|
||||
public Guid DiscriminatorId { get; set; }
|
||||
|
||||
[Comment("Автор изменения")]
|
||||
public Guid IdAuthor { get; set; }
|
||||
|
||||
[Comment("Дата создания записи")]
|
||||
public DateTimeOffset Creation { get; set; }
|
||||
|
||||
|
@ -10,11 +10,6 @@ public interface IChangeLog
|
||||
/// </summary>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Автор изменения
|
||||
/// </summary>
|
||||
public Guid IdAuthor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата создания записи
|
||||
/// </summary>
|
||||
|
@ -28,7 +28,6 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
{
|
||||
Id = Uuid7.Guid(),
|
||||
Creation = commitDto.Creation,
|
||||
IdAuthor = commitDto.IdAuthor,
|
||||
DiscriminatorId = idDiscriminator,
|
||||
Value = values.Value,
|
||||
IdCreatedCommit = commitDto.Id,
|
||||
@ -76,7 +75,7 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
foreach (var entity in entities)
|
||||
{
|
||||
entity.Obsolete = updateTime;
|
||||
entity.DiscriminatorId = idCommit;
|
||||
entity.DiscriminatorId = idDiscriminator;
|
||||
}
|
||||
|
||||
return await db.SaveChangesAsync(token);
|
||||
@ -92,7 +91,7 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
|
||||
using var transaction = await db.Database.BeginTransactionAsync(token);
|
||||
|
||||
result += await MarkAsDeleted(commitDto.Id, changeLogIds, commitDto.Creation, token);
|
||||
result += await MarkAsDeleted(idDiscriminator, commitDto.Id, commitDto.Creation, token);
|
||||
result += await AddRange(idDiscriminator, commitDto, dtos, token);
|
||||
|
||||
await transaction.CommitAsync(token);
|
||||
@ -105,15 +104,17 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
var dbSet = db.Set<ChangeLog>();
|
||||
|
||||
var updatedIds = dtos.Select(d => d.Id);
|
||||
var updatedEntities = dbSet
|
||||
var updatedEntities = await dbSet
|
||||
.Where(s => updatedIds.Contains(s.Id))
|
||||
.ToDictionary(s => s.Id);
|
||||
.ToArrayAsync(token);
|
||||
|
||||
var updatedEntitiesDict = updatedEntities.ToDictionary(s => s.Id);
|
||||
|
||||
using var transaction = await db.Database.BeginTransactionAsync(token);
|
||||
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
var updatedEntity = updatedEntities.GetValueOrDefault(dto.Id);
|
||||
var updatedEntity = updatedEntitiesDict.GetValueOrDefault(dto.Id);
|
||||
if (updatedEntity is null)
|
||||
{
|
||||
throw new ArgumentException($"Entity with id = {dto.Id} doesn't exist in Db", nameof(dto));
|
||||
@ -123,7 +124,6 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
{
|
||||
Id = Uuid7.Guid(),
|
||||
Creation = commitDto.Creation,
|
||||
IdAuthor = commitDto.IdAuthor,
|
||||
DiscriminatorId = updatedEntity.DiscriminatorId,
|
||||
Value = dto.Value,
|
||||
IdCreatedCommit = commitDto.Id,
|
||||
|
@ -22,6 +22,7 @@ public class ChangeLogTest
|
||||
[Fact]
|
||||
public async Task AddRange()
|
||||
{
|
||||
//arrange
|
||||
var discriminatorId = Uuid7.Guid();
|
||||
var expectedCommitId = Uuid7.Guid();
|
||||
var comment = "Добавление нескольких значений";
|
||||
@ -37,11 +38,13 @@ public class ChangeLogTest
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(2);
|
||||
|
||||
//act
|
||||
var addRangeResult = await service
|
||||
.AddRange(discriminatorId, commit, dtos, CancellationToken.None);
|
||||
addRangeResult = await service
|
||||
.AddRange(discriminatorId, commit, dtos, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
await changeLogCommitRepository.Received(1).Add(commit, CancellationToken.None);
|
||||
await changeLogRepository.Received(2).AddRange(discriminatorId, commit, dtos, CancellationToken.None);
|
||||
}
|
||||
@ -49,6 +52,7 @@ public class ChangeLogTest
|
||||
[Fact]
|
||||
public async Task UpdateRange()
|
||||
{
|
||||
//arrange
|
||||
var discriminatorId = Uuid7.Guid();
|
||||
|
||||
var comment = "Изменение нескольких значений";
|
||||
@ -65,7 +69,7 @@ public class ChangeLogTest
|
||||
Arg.Any<IEnumerable<ChangeLogValuesDto>>(),
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(2);
|
||||
|
||||
//act
|
||||
var updateRangeResult = await service
|
||||
.UpdateRange(commit, dtos, CancellationToken.None);
|
||||
|
||||
@ -75,6 +79,7 @@ public class ChangeLogTest
|
||||
updateRangeResult = await service
|
||||
.UpdateRange(commit, dtos, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
await changeLogCommitRepository.Received(1).Add(commit, CancellationToken.None);
|
||||
await changeLogRepository.Received(3).UpdateRange(commit, dtos, CancellationToken.None);
|
||||
}
|
||||
@ -82,6 +87,7 @@ public class ChangeLogTest
|
||||
[Fact]
|
||||
public async Task MarkAsDeleted()
|
||||
{
|
||||
//arrange
|
||||
var discriminatorId = Uuid7.Guid();
|
||||
var expectedCommitId = Uuid7.Guid();
|
||||
var comment = "Удаление нескольких значений";
|
||||
@ -98,11 +104,13 @@ public class ChangeLogTest
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(2);
|
||||
|
||||
//act
|
||||
var markAsDeletedResult = await service
|
||||
.MarkAsDeleted(dtoIds, commit, CancellationToken.None);
|
||||
markAsDeletedResult = await service
|
||||
.MarkAsDeleted(dtoIds, commit, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
await changeLogCommitRepository.Received(1).Add(commit, CancellationToken.None);
|
||||
await changeLogRepository.Received(2).MarkAsDeleted(commit.Id, dtoIds, commit.Creation, CancellationToken.None);
|
||||
}
|
||||
@ -110,6 +118,7 @@ public class ChangeLogTest
|
||||
[Fact]
|
||||
public async Task ClearAndAddRange()
|
||||
{
|
||||
//arrange
|
||||
var discriminatorId = Uuid7.Guid();
|
||||
var expectedCommitId = Uuid7.Guid();
|
||||
var comment = "Удаление и добавление нескольких значений";
|
||||
@ -126,11 +135,13 @@ public class ChangeLogTest
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(2);
|
||||
|
||||
//act
|
||||
var clearAndAddResult = await service
|
||||
.ClearAndAddRange(discriminatorId, commit, dtos, CancellationToken.None);
|
||||
clearAndAddResult = await service
|
||||
.ClearAndAddRange(discriminatorId, commit, dtos, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
await changeLogCommitRepository.Received(1).Add(commit, CancellationToken.None);
|
||||
await changeLogRepository.Received(2).ClearAndAddRange(discriminatorId, commit, dtos, CancellationToken.None);
|
||||
}
|
||||
@ -138,6 +149,7 @@ public class ChangeLogTest
|
||||
[Fact]
|
||||
public async Task GetByDate()
|
||||
{
|
||||
//arrange
|
||||
var discriminatorId = Uuid7.Guid();
|
||||
var paginationRequest = new PaginationRequest()
|
||||
{
|
||||
@ -162,9 +174,11 @@ public class ChangeLogTest
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(items);
|
||||
|
||||
//act
|
||||
var actualItems = await service
|
||||
.GetByDate(discriminatorId, momentDate, paginationRequest, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
await changeLogRepository.Received(1).GetByDate(discriminatorId, momentDate, paginationRequest, CancellationToken.None);
|
||||
|
||||
}
|
||||
@ -172,9 +186,10 @@ public class ChangeLogTest
|
||||
[Fact]
|
||||
public async Task GetChangeLogForInterval()
|
||||
{
|
||||
//arrange
|
||||
var discriminatorId = Uuid7.Guid();
|
||||
var dtos = GenerateChangeLogDto(5);
|
||||
;
|
||||
|
||||
var dateBegin = DateTimeOffset.UtcNow.AddDays(-5);
|
||||
var dateEnd = DateTimeOffset.UtcNow;
|
||||
|
||||
@ -186,9 +201,11 @@ public class ChangeLogTest
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(dtos);
|
||||
|
||||
//act
|
||||
var actualItems = await service
|
||||
.GetChangeLogForInterval(discriminatorId, dateBegin, dateEnd, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
await changeLogRepository.Received(1).GetChangeLogForInterval(discriminatorId, dateBegin, dateEnd, CancellationToken.None);
|
||||
|
||||
}
|
||||
@ -196,6 +213,7 @@ public class ChangeLogTest
|
||||
[Fact]
|
||||
public async Task GetDatesChange()
|
||||
{
|
||||
//arrange
|
||||
var discriminatorId = Uuid7.Guid();
|
||||
|
||||
var dateBegin = DateTimeOffset.UtcNow.AddDays(-5);
|
||||
@ -212,9 +230,11 @@ public class ChangeLogTest
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(dtos);
|
||||
|
||||
//act
|
||||
var actualItems = await service
|
||||
.GetDatesChange(discriminatorId, CancellationToken.None);
|
||||
|
||||
//assert
|
||||
await changeLogRepository.Received(1).GetDatesChange(discriminatorId, CancellationToken.None);
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user