diff --git a/DD.Persistence.API/Controllers/ChangeLogController.cs b/DD.Persistence.API/Controllers/ChangeLogController.cs index 6f613f7..e01193d 100644 --- a/DD.Persistence.API/Controllers/ChangeLogController.cs +++ b/DD.Persistence.API/Controllers/ChangeLogController.cs @@ -34,8 +34,8 @@ public class ChangeLogController : ControllerBase, IChangeLogApi CancellationToken token) { var userId = User.GetUserId(); - 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 DeleteRange(IEnumerable ids, string comment, CancellationToken token) { var userId = User.GetUserId(); - var changeLogCommit = new ChangeLogCommitDto(userId, comment, Enumerable.Empty()); + 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(); - 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(); - 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); } diff --git a/DD.Persistence.API/Services/ChangeLogService.cs b/DD.Persistence.API/Services/ChangeLogService.cs index 5ee94f1..5b33cd8 100644 --- a/DD.Persistence.API/Services/ChangeLogService.cs +++ b/DD.Persistence.API/Services/ChangeLogService.cs @@ -58,14 +58,15 @@ public class ChangeLogService /// /// /// + /// /// /// - public async Task AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token) + public async Task AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable 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 /// /// /// + /// /// /// - public async Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token) + public async Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable 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 /// Обновить записи в журнале изменений /// /// + /// /// /// - public async Task UpdateRange(ChangeLogCommitDto changeLogCommit, CancellationToken token) + public async Task UpdateRange(ChangeLogCommitDto changeLogCommit, IEnumerable 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; } diff --git a/DD.Persistence.Database/Repositories/ChangeLogRepository.cs b/DD.Persistence.Database/Repositories/ChangeLogRepository.cs index 5d49ec1..e4a6837 100644 --- a/DD.Persistence.Database/Repositories/ChangeLogRepository.cs +++ b/DD.Persistence.Database/Repositories/ChangeLogRepository.cs @@ -19,10 +19,10 @@ public class ChangeLogRepository : IChangeLogRepository this.db = db; } - public async Task AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token) + public async Task AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable dtos, CancellationToken token) { var entities = new List(); - 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 ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token) + public async Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable 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 UpdateRange(ChangeLogCommitDto commitDto, CancellationToken token) + public async Task UpdateRange(ChangeLogCommitDto commitDto, IEnumerable dtos, CancellationToken token) { var dbSet = db.Set(); - 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) diff --git a/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs b/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs index 9c4a94a..e6252dc 100644 --- a/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs +++ b/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs @@ -25,19 +25,13 @@ public class ChangeLogCommitDto /// public string Comment { get; set; } = string.Empty; - /// - /// Набор изменений - /// - public IEnumerable ChangeLogItems { get; set; } - /// /// /// - public ChangeLogCommitDto(Guid idAuthor, string comment, IEnumerable changeLogItems) + public ChangeLogCommitDto(Guid idAuthor, string comment) { IdAuthor = idAuthor; Comment = comment; - ChangeLogItems = changeLogItems; Creation = DateTimeOffset.UtcNow; } diff --git a/DD.Persistence/Repositories/IChangeLogRepository.cs b/DD.Persistence/Repositories/IChangeLogRepository.cs index a4421d4..62b89c9 100644 --- a/DD.Persistence/Repositories/IChangeLogRepository.cs +++ b/DD.Persistence/Repositories/IChangeLogRepository.cs @@ -15,9 +15,10 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// ключ справочника /// коммит с изменениями + /// /// /// - Task AddRange(Guid idDiscriminator, ChangeLogCommitDto dto, CancellationToken token); + Task AddRange(Guid idDiscriminator, ChangeLogCommitDto dto, IEnumerable dtos, CancellationToken token); /// /// Пометить записи как удаленные @@ -44,17 +45,19 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// коммит с изменениями + /// /// /// - Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token); + Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable dtos, CancellationToken token); /// /// Редактирование записей /// /// коммит с изменениями + /// /// /// - Task UpdateRange(ChangeLogCommitDto commitDto, CancellationToken token); + Task UpdateRange(ChangeLogCommitDto commitDto, IEnumerable dtos, CancellationToken token); /// /// Получение актуальных записей на определенный момент времени (с пагинацией)