Правки по результатам ревью

This commit is contained in:
Olga Nemt 2025-02-24 12:11:48 +05:00
parent 930c4e8722
commit a436b839f6
11 changed files with 127 additions and 95 deletions

View File

@ -16,7 +16,7 @@ using UuidExtensions;
[Route("api/[controller]")] [Route("api/[controller]")]
public class ChangeLogController : ControllerBase, IChangeLogApi public class ChangeLogController : ControllerBase, IChangeLogApi
{ {
private ChangeLogService service { get; } private readonly ChangeLogService service;
/// <summary> /// <summary>
/// ctor /// ctor
@ -40,7 +40,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
public async Task<IActionResult> AddRange( public async Task<IActionResult> AddRange(
[FromRoute] Guid idDiscriminator, [FromRoute] Guid idDiscriminator,
[FromBody] IEnumerable<ChangeLogValuesDto> dtos, [FromBody] IEnumerable<ChangeLogValuesDto> dtos,
string comment, string? comment,
CancellationToken token) CancellationToken token)
{ {
var userId = User.GetUserId<Guid>(); var userId = User.GetUserId<Guid>();

View File

@ -1,9 +1,8 @@
using DD.Persistence.Models.Common; using DD.Persistence.Models;
using DD.Persistence.Models; using DD.Persistence.Models.Common;
using DD.Persistence.Models.Requests; using DD.Persistence.Models.Requests;
using DD.Persistence.Repositories; using DD.Persistence.Repositories;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using DD.Persistence.Database.Entity;
namespace DD.Persistence.API.Services; namespace DD.Persistence.API.Services;
@ -34,39 +33,38 @@ public class ChangeLogService
} }
/// <summary> /// <summary>
/// Чтение ключа коммита из кеша или (если коммита в кеше нет) создание коммита /// Чтение или создание нового коммита
/// </summary> /// </summary>
/// <param name="commitDto"></param> /// <param name="request"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
private async Task<Guid> GetOrCreateCommitAsync(CreateChangeLogCommitRequest commitDto, CancellationToken token) private async Task<ChangeLogCommitDto> GetOrCreateCommitAsync(CreateChangeLogCommitRequest request, CancellationToken token)
{ {
var key = (commitDto.IdAuthor, commitDto.Comment); var key = (request.IdAuthor, request.Comment);
var commitId = await memoryCache.GetOrCreateAsync(key, async (cacheEntry) => var commit = await memoryCache.GetOrCreateAsync(key, async (cacheEntry) =>
{ {
cacheEntry.AbsoluteExpirationRelativeToNow = AbsoluteExpirationRelativeToNow; cacheEntry.AbsoluteExpirationRelativeToNow = AbsoluteExpirationRelativeToNow;
var commitId = await commitRepository.Add(commitDto, token); var commit = await commitRepository.Add(request, token);
return commitId; return commit;
}); });
return commitId; return commit!;
} }
/// <summary> /// <summary>
/// Добавление записи в журнал изменений /// Добавление записи в журнал изменений
/// </summary> /// </summary>
/// <param name="idDiscriminator"></param> /// <param name="idDiscriminator"></param>
/// <param name="commitRequestDto"></param> /// <param name="request"></param>
/// <param name="dtos"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
public async Task<int> AddRange(Guid idDiscriminator, CreateChangeLogCommitRequest commitRequestDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token) public async Task<int> AddRange(Guid idDiscriminator, CreateChangeLogCommitRequest request, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{ {
var commitId = await GetOrCreateCommitAsync(commitRequestDto, token); var commit = await GetOrCreateCommitAsync(request, token);
var commitDto = new ChangeLogCommitDto(commitId, commitRequestDto);
var result = await repository.AddRange(idDiscriminator, commitDto, dtos, token); var result = await repository.AddRange(idDiscriminator, commit, dtos, token);
return result; return result;
} }
@ -74,15 +72,14 @@ public class ChangeLogService
/// Пометить запись журнала изменений как удаленную /// Пометить запись журнала изменений как удаленную
/// </summary> /// </summary>
/// <param name="ids"></param> /// <param name="ids"></param>
/// <param name="commitRequestDto"></param> /// <param name="request"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
public async Task<int> MarkAsDeleted(IEnumerable<Guid> ids, CreateChangeLogCommitRequest commitRequestDto, CancellationToken token) public async Task<int> MarkAsDeleted(IEnumerable<Guid> ids, CreateChangeLogCommitRequest request, CancellationToken token)
{ {
var commitId = await GetOrCreateCommitAsync(commitRequestDto, token); var commit = await GetOrCreateCommitAsync(request, token);
var commitDto = new ChangeLogCommitDto(commitId, commitRequestDto);
var result = await repository.MarkAsDeleted(commitId, ids, commitDto.Creation, token); var result = await repository.MarkAsDeleted(ids, commit, token);
return result; return result;
} }
@ -91,16 +88,15 @@ public class ChangeLogService
/// Очистить старые и добавить новые записи в журнал изменений /// Очистить старые и добавить новые записи в журнал изменений
/// </summary> /// </summary>
/// <param name="idDiscriminator"></param> /// <param name="idDiscriminator"></param>
/// <param name="commitRequestDto"></param> /// <param name="request"></param>
/// <param name="dtos"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
public async Task<int> ClearAndAddRange(Guid idDiscriminator, CreateChangeLogCommitRequest commitRequestDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token) public async Task<int> ClearAndAddRange(Guid idDiscriminator, CreateChangeLogCommitRequest request, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{ {
var commitId = await GetOrCreateCommitAsync(commitRequestDto, token); var commit = await GetOrCreateCommitAsync(request, token);
var commitDto = new ChangeLogCommitDto(commitId, commitRequestDto);
var result = await repository.ClearAndAddRange(idDiscriminator, commitDto, dtos, token); var result = await repository.ClearAndAddRange(idDiscriminator, commit, dtos, token);
return result; return result;
} }
@ -108,16 +104,14 @@ public class ChangeLogService
/// <summary> /// <summary>
/// Обновить записи в журнале изменений /// Обновить записи в журнале изменений
/// </summary> /// </summary>
/// <param name="commitRequestDto"></param> /// <param name="commitRequest"></param>
/// <param name="dtos"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
public async Task<int> UpdateRange(CreateChangeLogCommitRequest commitRequestDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token) public async Task<int> UpdateRange(CreateChangeLogCommitRequest commitRequest, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{ {
var commitId = await GetOrCreateCommitAsync(commitRequestDto, token); var commit = await GetOrCreateCommitAsync(commitRequest, token);
var commitDto = new ChangeLogCommitDto(commitId, commitRequestDto); var result = await repository.UpdateRange(commit, dtos, token);
var result = await repository.UpdateRange(commitDto, dtos, token);
return result; return result;
} }
@ -180,7 +174,7 @@ public class ChangeLogService
{ {
var result = await repository.GetGtDate(idDiscriminator, dateBegin, token); var result = await repository.GetGtDate(idDiscriminator, dateBegin, token);
return result; return result;
} }
/// <summary> /// <summary>

View File

@ -1,6 +1,5 @@
using DD.Persistence.Database.EntityAbstractions; using DD.Persistence.Database.EntityAbstractions;
using DD.Persistence.ModelsAbstractions;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
@ -19,9 +18,15 @@ public class ChangeLog : IDiscriminatorItem, IChangeLog
[Comment("Дискриминатор таблицы")] [Comment("Дискриминатор таблицы")]
public Guid DiscriminatorId { get; set; } public Guid DiscriminatorId { get; set; }
/// <summary>
/// то же самое поле присутствует в связанной таблице change_log_commit (поле creation)
/// </summary>
[Comment("Дата создания записи")] [Comment("Дата создания записи")]
public DateTimeOffset Creation { get; set; } public DateTimeOffset Creation { get; set; }
/// <summary>
/// то же самое поле присутствует в связанной таблице change_log_commit (поле creation)
/// </summary>
[Comment("Дата устаревания (например при удалении)")] [Comment("Дата устаревания (например при удалении)")]
public DateTimeOffset? Obsolete { get; set; } public DateTimeOffset? Obsolete { get; set; }
@ -37,9 +42,15 @@ public class ChangeLog : IDiscriminatorItem, IChangeLog
[Comment("Id коммита на устаревание записи")] [Comment("Id коммита на устаревание записи")]
public Guid? IdObsoletedCommit { get; set; } public Guid? IdObsoletedCommit { get; set; }
/// <summary>
/// коммит для актуальной записи
/// </summary>
[Required, ForeignKey(nameof(IdCreatedCommit)), Comment("Коммит пользователя на создание записи")] [Required, ForeignKey(nameof(IdCreatedCommit)), Comment("Коммит пользователя на создание записи")]
public virtual ChangeLogCommit CreatedCommit { get; set; } = null!; public virtual ChangeLogCommit CreatedCommit { get; set; } = null!;
/// <summary>
/// коммит для устаревшей записи
/// </summary>
[ForeignKey(nameof(IdObsoletedCommit)), Comment("Коммит пользователя на устаревание записи")] [ForeignKey(nameof(IdObsoletedCommit)), Comment("Коммит пользователя на устаревание записи")]
public virtual ChangeLogCommit? ObsoletedCommit { get; set; } public virtual ChangeLogCommit? ObsoletedCommit { get; set; }
} }

View File

@ -1,6 +1,7 @@
using DD.Persistence.Database.Entity; using DD.Persistence.Database.Entity;
using DD.Persistence.Models.Requests; using DD.Persistence.Models.Requests;
using DD.Persistence.Repositories; using DD.Persistence.Repositories;
using Mapster;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using System; using System;
@ -20,20 +21,21 @@ public class ChangeLogCommitRepository : IChangeLogCommitRepository
this.db = db; this.db = db;
} }
public async Task<Guid> Add(CreateChangeLogCommitRequest commitRequestDto, CancellationToken token) public async Task<ChangeLogCommitDto> Add(CreateChangeLogCommitRequest commitRequest, CancellationToken token)
{ {
var commit = new ChangeLogCommit() var commit = new ChangeLogCommit()
{ {
Id = Uuid7.Guid(), Id = Uuid7.Guid(),
IdAuthor = commitRequestDto.IdAuthor, IdAuthor = commitRequest.IdAuthor,
Comment = commitRequestDto.Comment, Comment = commitRequest.Comment ?? string.Empty,
Creation = commitRequestDto.Creation, Creation = commitRequest.Creation,
}; };
db.Add(commit); db.Add(commit);
await db.SaveChangesAsync(); await db.SaveChangesAsync();
return commit.Id;
var commitDto = commit.Adapt<ChangeLogCommitDto>();
return commitDto;
} }
} }

View File

@ -42,7 +42,7 @@ public class ChangeLogRepository : IChangeLogRepository
return result; return result;
} }
public async Task<int> MarkAsDeleted(Guid idCommit, IEnumerable<Guid> ids, DateTimeOffset updateTime, CancellationToken token) public async Task<int> MarkAsDeleted(IEnumerable<Guid> ids, ChangeLogCommitDto commit, CancellationToken token)
{ {
var query = db.Set<ChangeLog>() var query = db.Set<ChangeLog>()
.Where(s => ids.Contains(s.Id)) .Where(s => ids.Contains(s.Id))
@ -57,14 +57,14 @@ public class ChangeLogRepository : IChangeLogRepository
foreach (var entity in entities) foreach (var entity in entities)
{ {
entity.Obsolete = updateTime; entity.Obsolete = commit.Creation;
entity.IdObsoletedCommit = idCommit; entity.IdObsoletedCommit = commit.Id;
} }
return await db.SaveChangesAsync(token); return await db.SaveChangesAsync(token);
} }
public async Task<int> MarkAsDeleted(Guid idDiscriminator, Guid idCommit, DateTimeOffset updateTime, CancellationToken token) public async Task<int> MarkAsDeleted(Guid idDiscriminator, ChangeLogCommitDto commit, CancellationToken token)
{ {
var query = db.Set<ChangeLog>() var query = db.Set<ChangeLog>()
.Where(s => s.DiscriminatorId == idDiscriminator) .Where(s => s.DiscriminatorId == idDiscriminator)
@ -74,8 +74,8 @@ public class ChangeLogRepository : IChangeLogRepository
foreach (var entity in entities) foreach (var entity in entities)
{ {
entity.Obsolete = updateTime; entity.Obsolete = commit.Creation;
entity.DiscriminatorId = idCommit; entity.DiscriminatorId = commit.Id;
} }
return await db.SaveChangesAsync(token); return await db.SaveChangesAsync(token);
@ -91,7 +91,7 @@ public class ChangeLogRepository : IChangeLogRepository
using var transaction = await db.Database.BeginTransactionAsync(token); using var transaction = await db.Database.BeginTransactionAsync(token);
result += await MarkAsDeleted(commitDto.Id, changeLogIds, commitDto.Creation, token); result += await MarkAsDeleted(idDiscriminator, commitDto, token);
result += await AddRange(idDiscriminator, commitDto, dtos, token); result += await AddRange(idDiscriminator, commitDto, dtos, token);
await transaction.CommitAsync(token); await transaction.CommitAsync(token);

View File

@ -44,11 +44,20 @@ public class ChangeLogControllerTest : BaseIntegrationTest
var idDiscriminator = newEntitiesData.Item1; var idDiscriminator = newEntitiesData.Item1;
var dtos = newEntitiesData.Item2; var dtos = newEntitiesData.Item2;
var newEntitiesData2 = await CreateAndReturnNewDtos(insertedCount, (-15, -1));
var idDiscriminator2 = newEntitiesData2.Item1;
var dtos2 = newEntitiesData2.Item2;
//act //act
var result = await client.ClearAndAddRange(idDiscriminator, dtos, "Добавление новых элементов и очистка старых", CancellationToken.None); var result = await client.ClearAndAddRange(idDiscriminator, dtos, "Добавление новых элементов и очистка старых", CancellationToken.None);
var changeLogActualWithIdDiscriminator = await client.GetByDate(idDiscriminator2, DateTimeOffset.UtcNow, paginationRequest, CancellationToken.None);
var changeLogActualWithIdDiscriminator2 = await client.GetByDate(idDiscriminator, DateTimeOffset.UtcNow, paginationRequest, CancellationToken.None);
// assert // assert
Assert.Equal(insertedCount * 2, result); Assert.Equal(insertedCount * 2, result);
Assert.Equal(insertedCount, changeLogActualWithIdDiscriminator.Count);
Assert.Equal(insertedCount, changeLogActualWithIdDiscriminator2.Count);
} }
[Fact] [Fact]
@ -143,12 +152,24 @@ public class ChangeLogControllerTest : BaseIntegrationTest
var idDiscriminator = newEntitiesData.Item1; var idDiscriminator = newEntitiesData.Item1;
var dtos = newEntitiesData.Item2; var dtos = newEntitiesData.Item2;
var newEntitiesData2 = await CreateAndReturnNewDtos(insertedCount, (-15, -1));
var idDiscriminator2 = newEntitiesData2.Item1;
var dtos2 = newEntitiesData2.Item2;
// act // act
var ids = dtos.Select(e => e.Id); var ids = dtos.Select(e => e.Id);
var result = await client.DeleteRange(ids, "Удаление нескольких записей", CancellationToken.None); var result = await client.DeleteRange(ids, "Удаление нескольких записей", CancellationToken.None);
// assert // assert
Assert.Equal(insertedCount, result); Assert.Equal(insertedCount, result);
// act
var actualWithIdDescriminator = await client.GetByDate(idDiscriminator, DateTimeOffset.UtcNow, paginationRequest, CancellationToken.None);
var actualWithIdDescriminator2 = await client.GetByDate(idDiscriminator2, DateTimeOffset.UtcNow, paginationRequest, CancellationToken.None);
// assert
Assert.Equal(0, actualWithIdDescriminator.Count);
Assert.Equal(insertedCount, actualWithIdDescriminator2.Count);
} }
[Fact] [Fact]

View File

@ -5,17 +5,26 @@
/// </summary> /// </summary>
public class ChangeLogCommitDto : CreateChangeLogCommitRequest public class ChangeLogCommitDto : CreateChangeLogCommitRequest
{ {
/// <summary>
///
/// </summary>
public ChangeLogCommitDto()
{
}
/// <summary>
/// ctor
/// </summary>
/// <param name="idAuthor"></param>
/// <param name="comment"></param>
public ChangeLogCommitDto(Guid idAuthor, string? comment) : base(idAuthor, comment)
{
}
/// <summary> /// <summary>
/// Id /// Id
/// </summary> /// </summary>
public Guid Id { get; set; } public Guid Id { get; set; }
/// <summary>
///
/// </summary>
public ChangeLogCommitDto(Guid id, CreateChangeLogCommitRequest request) : base(request.IdAuthor, request.Comment)
{
Id = id;
}
} }

View File

@ -18,15 +18,23 @@ public class CreateChangeLogCommitRequest
/// <summary> /// <summary>
/// Комментарий /// Комментарий
/// </summary> /// </summary>
public string Comment { get; set; } = string.Empty; public string? Comment { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public CreateChangeLogCommitRequest(Guid idAuthor, string comment) public CreateChangeLogCommitRequest()
{
}
/// <summary>
///
/// </summary>
public CreateChangeLogCommitRequest(Guid idAuthor, string? comment)
{ {
IdAuthor = idAuthor; IdAuthor = idAuthor;
Comment = comment; Comment = comment ?? string.Empty;
Creation = DateTimeOffset.UtcNow; Creation = DateTimeOffset.UtcNow;
} }

View File

@ -24,13 +24,12 @@ public class ChangeLogTest
{ {
//arrange //arrange
var discriminatorId = Uuid7.Guid(); var discriminatorId = Uuid7.Guid();
var expectedCommitId = Uuid7.Guid(); var commitRequest = new CreateChangeLogCommitRequest(Uuid7.Guid(), "Добавление нескольких значений");
var comment = "Добавление нескольких значений"; var commit = new ChangeLogCommitDto(commitRequest.IdAuthor, commitRequest.Comment);
var commitRequest = new CreateChangeLogCommitRequest(Uuid7.Guid(), comment); commit.Id = Uuid7.Guid();
var commit = new ChangeLogCommitDto(expectedCommitId, commitRequest);
var dtos = GenerateChangeLogValuesDto(2); var dtos = GenerateChangeLogValuesDto(2);
changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(Uuid7.Guid()); changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(commit);
changeLogRepository changeLogRepository
.AddRange( .AddRange(
Arg.Any<Guid>(), Arg.Any<Guid>(),
@ -55,14 +54,13 @@ public class ChangeLogTest
{ {
//arrange //arrange
var discriminatorId = Uuid7.Guid(); var discriminatorId = Uuid7.Guid();
var expectedCommitId = Uuid7.Guid(); var commitRequest = new CreateChangeLogCommitRequest(Uuid7.Guid(), "Изменение нескольких значений");
var comment = "Изменение нескольких значений"; var commit = new ChangeLogCommitDto(commitRequest.IdAuthor, commitRequest.Comment);
var commitRequest = new CreateChangeLogCommitRequest(Uuid7.Guid(), comment); commit.Id = Uuid7.Guid();
var commit = new ChangeLogCommitDto(expectedCommitId, commitRequest);
var dtos = GenerateChangeLogValuesDto(2); var dtos = GenerateChangeLogValuesDto(2);
changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(commit.Id); changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(commit);
changeLogRepository changeLogRepository
.UpdateRange( .UpdateRange(
@ -91,19 +89,17 @@ public class ChangeLogTest
{ {
//arrange //arrange
var discriminatorId = Uuid7.Guid(); var discriminatorId = Uuid7.Guid();
var expectedCommitId = Uuid7.Guid(); var commitRequest = new CreateChangeLogCommitRequest(Uuid7.Guid(), "Удаление нескольких значений");
var comment = "Удаление нескольких значений"; var commit = new ChangeLogCommitDto(commitRequest.IdAuthor, commitRequest.Comment);
var commitRequest = new CreateChangeLogCommitRequest(Uuid7.Guid(), comment); commit.Id = Uuid7.Guid();
var commit = new ChangeLogCommitDto(expectedCommitId, commitRequest);
var dtos = GenerateChangeLogValuesDto(2); var dtos = GenerateChangeLogValuesDto(2);
var dtoIds = dtos.Select(d => d.Id); var dtoIds = dtos.Select(d => d.Id);
changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(expectedCommitId); changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(commit);
changeLogRepository changeLogRepository
.MarkAsDeleted( .MarkAsDeleted(
Arg.Any<Guid>(),
Arg.Any<IEnumerable<Guid>>(), Arg.Any<IEnumerable<Guid>>(),
Arg.Any<DateTimeOffset>(), Arg.Any<ChangeLogCommitDto>(),
Arg.Any<CancellationToken>()) Arg.Any<CancellationToken>())
.Returns(2); .Returns(2);
@ -115,7 +111,7 @@ public class ChangeLogTest
//assert //assert
await changeLogCommitRepository.Received(1).Add(commitRequest, CancellationToken.None); await changeLogCommitRepository.Received(1).Add(commitRequest, CancellationToken.None);
await changeLogRepository.Received(2).MarkAsDeleted(commit.Id, dtoIds, Arg.Any<DateTimeOffset>(), CancellationToken.None); await changeLogRepository.Received(2).MarkAsDeleted(dtoIds, commit, CancellationToken.None);
} }
[Fact] [Fact]
@ -123,14 +119,13 @@ public class ChangeLogTest
{ {
//arrange //arrange
var discriminatorId = Uuid7.Guid(); var discriminatorId = Uuid7.Guid();
var expectedCommitId = Uuid7.Guid(); var commitRequest = new CreateChangeLogCommitRequest(Uuid7.Guid(), "Удаление и добавление нескольких значений");
var comment = "Удаление и добавление нескольких значений"; var commit = new ChangeLogCommitDto(commitRequest.IdAuthor, commitRequest.Comment);
var commitRequest = new CreateChangeLogCommitRequest(expectedCommitId, comment); commit.Id = Uuid7.Guid();
var commit = new ChangeLogCommitDto(expectedCommitId, commitRequest);
var dtos = GenerateChangeLogValuesDto(2); var dtos = GenerateChangeLogValuesDto(2);
var dtoIds = dtos.Select(d => d.Id); var dtoIds = dtos.Select(d => d.Id);
changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(Uuid7.Guid()); changeLogCommitRepository.Add(Arg.Any<CreateChangeLogCommitRequest>(), Arg.Any<CancellationToken>()).Returns(commit);
changeLogRepository changeLogRepository
.ClearAndAddRange( .ClearAndAddRange(
Arg.Any<Guid>(), Arg.Any<Guid>(),

View File

@ -1,9 +1,4 @@
using DD.Persistence.Models.Requests; using DD.Persistence.Models.Requests;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DD.Persistence.Repositories; namespace DD.Persistence.Repositories;
@ -18,5 +13,5 @@ public interface IChangeLogCommitRepository
/// <param name="commitDto"></param> /// <param name="commitDto"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task<Guid> Add(CreateChangeLogCommitRequest commitDto, CancellationToken token); Task<ChangeLogCommitDto> Add(CreateChangeLogCommitRequest commitDto, CancellationToken token);
} }

View File

@ -1,7 +1,6 @@
using DD.Persistence.Models; using DD.Persistence.Models;
using DD.Persistence.Models.Common; using DD.Persistence.Models.Common;
using DD.Persistence.Models.Requests; using DD.Persistence.Models.Requests;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion.Internal;
namespace DD.Persistence.Repositories; namespace DD.Persistence.Repositories;
@ -23,22 +22,20 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository<ChangeL
/// <summary> /// <summary>
/// Пометить записи как удаленные /// Пометить записи как удаленные
/// </summary> /// </summary>
/// <param name="idCommit"></param>
/// <param name="ids">ключи записей</param> /// <param name="ids">ключи записей</param>
/// <param name="updateTime"></param> /// <param name="commit"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task<int> MarkAsDeleted(Guid idCommit, IEnumerable<Guid> ids, DateTimeOffset updateTime, CancellationToken token); Task<int> MarkAsDeleted(IEnumerable<Guid> ids, ChangeLogCommitDto commit, CancellationToken token);
/// <summary> /// <summary>
/// Пометить записи как удаленные /// Пометить записи как удаленные
/// </summary> /// </summary>
/// <param name="idDiscriminator">дискриминатор таблицы</param> /// <param name="idDiscriminator">дискриминатор таблицы</param>
/// <param name="idCommit"></param> /// <param name="commit"></param>
/// <param name="updateTime"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task<int> MarkAsDeleted(Guid idDiscriminator, Guid idCommit, DateTimeOffset updateTime, CancellationToken token); Task<int> MarkAsDeleted(Guid idDiscriminator, ChangeLogCommitDto commit, CancellationToken token);
/// <summary> /// <summary>
/// Очистить и добавить новые /// Очистить и добавить новые