Правки по результатам PR - 2

This commit is contained in:
Оля Бизюкова 2025-02-18 15:53:54 +05:00
parent fd8bfac6a6
commit baba1a05c0
5 changed files with 31 additions and 31 deletions

View File

@ -34,8 +34,8 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
CancellationToken token)
{
var userId = User.GetUserId<Guid>();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
var result = await service.AddRange(idDiscriminator, changeLogCommit, token);
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
var result = await service.AddRange(idDiscriminator, changeLogCommit, dtos, token);
return CreatedAtAction(nameof(AddRange), result);
}
@ -45,7 +45,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
public async Task<IActionResult> DeleteRange(IEnumerable<Guid> ids, string comment, CancellationToken token)
{
var userId = User.GetUserId<Guid>();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, Enumerable.Empty<ChangeLogValuesDto>());
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
var result = await service.MarkAsDeleted(ids, changeLogCommit, token);
return Ok(result);
@ -60,8 +60,8 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
CancellationToken token)
{
var userId = User.GetUserId<Guid>();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
var result = await service.ClearAndAddRange(idDiscriminator, changeLogCommit, token);
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
var result = await service.ClearAndAddRange(idDiscriminator, changeLogCommit, dtos, token);
return Ok(result);
}
@ -73,8 +73,8 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
CancellationToken token)
{
var userId = User.GetUserId<Guid>();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
var result = await service.UpdateRange(changeLogCommit, token);
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
var result = await service.UpdateRange(changeLogCommit, dtos, token);
return Ok(result);
}

View File

@ -58,14 +58,15 @@ public class ChangeLogService
/// </summary>
/// <param name="idDiscriminator"></param>
/// <param name="commitDto"></param>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{
var commitId = await GetOrCreateCommitAsync(commitDto, token);
commitDto.Id = commitId;
var result = await repository.AddRange(idDiscriminator, commitDto, token);
var result = await repository.AddRange(idDiscriminator, commitDto, dtos, token);
return result;
}
@ -91,14 +92,15 @@ public class ChangeLogService
/// </summary>
/// <param name="idDiscriminator"></param>
/// <param name="commitDto"></param>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{
var commitId = await GetOrCreateCommitAsync(commitDto, token);
commitDto.Id = commitId;
var result = await repository.ClearAndAddRange(idDiscriminator, commitDto, token);
var result = await repository.ClearAndAddRange(idDiscriminator, commitDto, dtos, token);
return result;
}
@ -107,14 +109,15 @@ public class ChangeLogService
/// Обновить записи в журнале изменений
/// </summary>
/// <param name="changeLogCommit"></param>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
public async Task<int> UpdateRange(ChangeLogCommitDto changeLogCommit, CancellationToken token)
public async Task<int> UpdateRange(ChangeLogCommitDto changeLogCommit, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{
var commitId = await GetOrCreateCommitAsync(changeLogCommit, token);
changeLogCommit.Id = commitId;
var result = await repository.UpdateRange(changeLogCommit, token);
var result = await repository.UpdateRange(changeLogCommit, dtos, token);
return result;
}

View File

@ -19,10 +19,10 @@ public class ChangeLogRepository : IChangeLogRepository
this.db = db;
}
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{
var entities = new List<ChangeLog>();
foreach (var values in commitDto.ChangeLogItems)
foreach (var values in dtos)
{
var entity = new ChangeLog()
{
@ -83,35 +83,35 @@ public class ChangeLogRepository : IChangeLogRepository
}
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{
var result = 0;
var changeLogIds = commitDto.ChangeLogItems.Select(c => c.Id);
var changeLogIds = dtos.Select(c => c.Id);
var comment = commitDto.Comment;
using var transaction = await db.Database.BeginTransactionAsync(token);
result += await MarkAsDeleted(commitDto.Id, changeLogIds, commitDto.Creation, token);
result += await AddRange(idDiscriminator, commitDto, token);
result += await AddRange(idDiscriminator, commitDto, dtos, token);
await transaction.CommitAsync(token);
return result;
}
public async Task<int> UpdateRange(ChangeLogCommitDto commitDto, CancellationToken token)
public async Task<int> UpdateRange(ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
{
var dbSet = db.Set<ChangeLog>();
var updatedIds = commitDto.ChangeLogItems.Select(d => d.Id);
var updatedIds = dtos.Select(d => d.Id);
var updatedEntities = dbSet
.Where(s => updatedIds.Contains(s.Id))
.ToDictionary(s => s.Id);
using var transaction = await db.Database.BeginTransactionAsync(token);
foreach (var dto in commitDto.ChangeLogItems)
foreach (var dto in dtos)
{
var updatedEntity = updatedEntities.GetValueOrDefault(dto.Id);
if (updatedEntity is null)

View File

@ -25,19 +25,13 @@ public class ChangeLogCommitDto
/// </summary>
public string Comment { get; set; } = string.Empty;
/// <summary>
/// Набор изменений
/// </summary>
public IEnumerable<ChangeLogValuesDto> ChangeLogItems { get; set; }
/// <summary>
///
/// </summary>
public ChangeLogCommitDto(Guid idAuthor, string comment, IEnumerable<ChangeLogValuesDto> changeLogItems)
public ChangeLogCommitDto(Guid idAuthor, string comment)
{
IdAuthor = idAuthor;
Comment = comment;
ChangeLogItems = changeLogItems;
Creation = DateTimeOffset.UtcNow;
}

View File

@ -15,9 +15,10 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository<ChangeL
/// </summary>
/// <param name="idDiscriminator">ключ справочника</param>
/// <param name="dto">коммит с изменениями</param>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto dto, CancellationToken token);
Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto dto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token);
/// <summary>
/// Пометить записи как удаленные
@ -44,17 +45,19 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository<ChangeL
/// </summary>
/// <param name="idDiscriminator"></param>
/// <param name="commitDto">коммит с изменениями</param>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token);
Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token);
/// <summary>
/// Редактирование записей
/// </summary>
/// <param name="commitDto">коммит с изменениями</param>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> UpdateRange(ChangeLogCommitDto commitDto, CancellationToken token);
Task<int> UpdateRange(ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token);
/// <summary>
/// Получение актуальных записей на определенный момент времени (с пагинацией)