Добавить таблицу для учета комментариев и действий пользователя для вывода статистики по ChangeLog #30
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/#956-change-log-table-comment"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
https://project.ddrilling.ru/projects/persistance-service/work_packages/956/activity
Добавить таблицу для учета комментариев и действий пользователя для вывода статистики по ChangeLogto WIP: Добавить таблицу для учета комментариев и действий пользователя для вывода статистики по ChangeLog@ -19,0 +22,4 @@
/// </summary>
/// <param name="service"></param>
/// <param name="repository"></param>
public ChangeLogController(ChangeLogService service, IChangeLogRepository repository)
Должен остаться только один
@ -25,10 +33,12 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
public async Task<IActionResult> Add(
Скорее всего этот метод лишний.
@ -42,3 +53,3 @@
{
var userId = User.GetUserId<Guid>();
var result = await repository.AddRange(userId, idDiscriminator, dtos, token);
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
Скорее всего в ChangeLogCommitDto dtos - лишнее, и помешаются в методе delete например.
Отношение строчек с данными к коммиту делается уже внутри сервиса.
@ -38,1 +35,4 @@
public required IDictionary<string, object> Value { get; set; }
[Required, Comment("Id коммита")]
public Guid IdCommit { get; set; }
Для устаревших записей у нас есть 2 коммита: один при создании записи и еще один при устаревании.
Кстати туда же можно унести инфо о пользователях и датах.
WIP: Добавить таблицу для учета комментариев и действий пользователя для вывода статистики по ChangeLogto Добавить таблицу для учета комментариев и действий пользователя для вывода статистики по ChangeLog@ -0,0 +34,4 @@
}
/// <summary>
/// Создание или чтение данных коммита
Тут мы не читаем данные коммита. Только получаем его Id.
Не правильное название и описание.
@ -18,4 +18,0 @@
/// <summary>
/// Редактор
/// </summary>
public Guid? IdEditor { get; set; }
Свойства не должны быть реализованы в интерфейсе.
А почему автор коммита устаревания удален, а автор коммита создания нет?
@ -72,3 +77,3 @@
{
entity.Obsolete = updateTime;
entity.IdEditor = idEditor;
entity.DiscriminatorId = idCommit;
Это не правда
@ -79,2 +84,3 @@
public async Task<int> ClearAndAddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
Этот метод должен помечать все записи относящиеся к дискриминатору как удаленные и добавлять новые.
@ -101,7 +109,6 @@ public class ChangeLogRepository : IChangeLogRepository
.Where(s => updatedIds.Contains(s.Id))
.ToDictionary(s => s.Id);
Linq очень не оптимально материализует в словари.
Тут лучше материализовать сперва в массив, а затем массив в словарь.
@ -0,0 +8,4 @@
/// <summary>
/// Id
/// </summary>
public Guid Id { get; set; }
По правильному стоит разделить эту Dto на 2. Сделать отдельную dto для создания нового коммита, так как это поле генерируется внутри репозитория.
@ -0,0 +22,4 @@
[Fact]
public async Task AddRange()
{
var discriminatorId = Uuid7.Guid();
Расставь пож. во всех тестах комментарии "//act" и "//assert" чтобы было понятнее где подготовительные операции, где проверяемое действие и где начинаются проверки
@ -14,3 +14,3 @@
public class ChangeLogController : ControllerBase, IChangeLogApi
{
private readonly IChangeLogRepository repository;
private ChangeLogService service { get; }
Не ошибка, но почему не private readonly поле как везде? +Свойства == синтаксический сахар для методов Get_..() Set_..(), А значит они должны называться с большой буквы.
@ -21,3 +24,4 @@
this.service = service;
}
[HttpPost("{idDiscriminator}")]
Было бы здорова дать методам контроллеров текстовое описание для сваггера.
@ -0,0 +39,4 @@
/// <param name="commitDto"></param>
/// <param name="token"></param>
/// <returns></returns>
private async Task<Guid> GetOrCreateCommitAsync(CreateChangeLogCommitRequest commitDto, CancellationToken token)
Давай в кеше хранить комит целиком не только ID
@ -26,4 +22,2 @@
public Guid? IdEditor { get; set; }
[Comment("Дата создания записи")]
public DateTimeOffset Creation { get; set; }
Комментарий про денормализацию БД
@ -0,0 +20,4 @@
this.db = db;
}
public async Task<Guid> Add(CreateChangeLogCommitRequest commitRequestDto, CancellationToken token)
commitRequestDto -> commitRequest или request
@ -34,3 +43,3 @@
}
public async Task<int> MarkAsDeleted(Guid idEditor, IEnumerable<Guid> ids, CancellationToken token)
public async Task<int> MarkAsDeleted(Guid idCommit, IEnumerable<Guid> ids, DateTimeOffset updateTime, CancellationToken token)
Как будто и idCommit и updateTime есть в ChangeLogCommitDto
@ -82,2 +87,4 @@
var result = 0;
var changeLogIds = dtos.Select(c => c.Id);
var comment = commitDto.Comment;
эта логкальная переменная дальше нигде не используется. Зачем она здесь?
@ -85,3 +93,2 @@
result += await MarkAsDeleted(idAuthor, idDiscriminator, token);
result += await AddRange(idAuthor, idDiscriminator, dtos, token);
result += await MarkAsDeleted(commitDto.Id, changeLogIds, commitDto.Creation, token);
Это не то.
Покрой этот метод интеграционным тестом плиз.
// arrange
add some data winth 2 discriminators
// act replace data for 1 discriminaqtor
// assert
check thar othe data with othe discr
Checkout
From your project repository, check out a new branch and test the changes.