#745 Aктуализированть функционал по работе с временными рядами под новую сущность #19

Merged
on.nemtina merged 20 commits from TimestampedValuesRepository into master 2025-01-22 16:44:04 +05:00
Collaborator
No description provided.
ng.frolov was assigned by rs.efremov 2025-01-20 09:43:57 +05:00
on.nemtina was assigned by rs.efremov 2025-01-20 09:43:57 +05:00
rs.efremov added 11 commits 2025-01-20 09:43:57 +05:00
Добавить TagBag, изменить Date на Timestamp
Some checks failed
Unit tests / test (push) Failing after 51s
421ab41855
Merge branch 'master' into TagBagRepository
Some checks failed
Unit tests / test (push) Failing after 46s
aa0540d2af
Наработки
Some checks failed
Unit tests / test (push) Failing after 47s
750788d550
Изменить клиента, тесты
Some checks failed
Unit tests / test (push) Failing after 55s
9736b41f1a
Реализация под правильную сущность
Some checks failed
Unit tests / test (push) Failing after 49s
556fdcbca0
Доработки
Some checks failed
Unit tests / test (push) Failing after 55s
fd276f5a43
Фикс Setpoint Timestamp
Some checks failed
Unit tests / test (push) Failing after 1m5s
21664d1e16
Фикс настроек
All checks were successful
Unit tests / test (push) Successful in 2m30s
89fe8a1807
Фикс описаний
All checks were successful
Unit tests / test (push) Successful in 1m4s
156328f2b4
rs.efremov added 1 commit 2025-01-20 09:55:25 +05:00
Merge branch 'master' into TimestampedValuesRepository
All checks were successful
Unit tests / test (push) Successful in 53s
d8497ce46a
ng.frolov requested changes 2025-01-20 11:01:45 +05:00
ng.frolov left a comment
Collaborator

Надо выделять сервис, там дофига логики будет:)

Надо выделять сервис, там дофига логики будет:)
@ -0,0 +13,4 @@
/// <summary>
/// Идентификаторы
/// </summary>
public string[] Identity { get; set; } = [];
Collaborator

Это названия свойств.
Предлагаю сразу хранить их в виде объектов описания.
Сейчас описание состоит из названия свойства, но в будущем оно может вырасти и хранить тип данных и метаданные для схемы protobuf. Или Даже текстовое описание, которое смогут получать наши клиенты из сваггера.

Это названия свойств. Предлагаю сразу хранить их в виде объектов описания. Сейчас описание состоит из названия свойства, но в будущем оно может вырасти и хранить тип данных и метаданные для схемы protobuf. Или Даже текстовое описание, которое смогут получать наши клиенты из сваггера.
Author
Collaborator

PropNames

PropNames
@ -0,0 +214,4 @@
private async Task CreateValuesIdentityIfNotExist(Guid discriminatorId, string[] keys, CancellationToken token)
{
var valuesIdentities = await relatedDataRepository.Get(token);
Collaborator

Предлагаю valuesIdentity переименовать в dataScheme.

Предлагаю valuesIdentity переименовать в dataScheme.
Author
Collaborator

Переименовано

Переименовано
@ -0,0 +216,4 @@
{
var valuesIdentities = await relatedDataRepository.Get(token);
var valuesIdentity = valuesIdentities?
.FirstOrDefault(e => e.DiscriminatorId == discriminatorId);
Collaborator

Нам нужен метод поиска по репозиторию схем данных внутри этого репозитория. Перебор IEnumerable для каждой добавляемой точки будет довольно дорогой историей

Нам нужен метод поиска по репозиторию схем данных внутри этого репозитория. Перебор IEnumerable для каждой добавляемой точки будет довольно дорогой историей
Author
Collaborator

Механизм вычитки изменен

Механизм вычитки изменен
rs.efremov added 2 commits 2025-01-20 17:24:10 +05:00
rs.efremov added 2 commits 2025-01-21 10:53:36 +05:00
rs.efremov added 1 commit 2025-01-21 11:32:40 +05:00
on.nemtina approved these changes 2025-01-21 14:26:15 +05:00
on.nemtina left a comment
Owner

Рецензия 1

Рецензия 1
@ -0,0 +30,4 @@
/// <param name="dtos"></param>
/// <param name="token"></param>
[HttpPost]
[ProducesResponseType(typeof(int), (int)HttpStatusCode.Created)]
Owner

Если у нас возвращаемый статус Created, то тогда нужно возвращать CreatedAtAction

Если у нас возвращаемый статус Created, то тогда нужно возвращать CreatedAtAction
@ -19,3 +19,3 @@
if (response.IsSuccessStatusCode)
{
return response.Content;
return response.Content!;
Owner

А может же быть такое, что запрос вернул 200 статус, но контент при этом null...

А может же быть такое, что запрос вернул 200 статус, но контент при этом null...
Author
Collaborator

Сделал Task<T?> - Так будет правильно

Сделал Task<T?> - Так будет правильно
@ -0,0 +100,4 @@
/// <param name="take"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<T>> GetLast<T>(Guid idDiscriminator, int take, CancellationToken token);
Owner

2 метода GetLast: один просто, другой Generic - так должно и быть?
А еще нужно убрать columnNames из комментария

2 метода GetLast: один просто, другой Generic - так должно и быть? А еще нужно убрать columnNames из комментария
Author
Collaborator

Да, это наработки Саши. generic методы позволяют при использовании наших клиентов мапить результат на указанную дто-шку

Да, это наработки Саши. generic методы позволяют при использовании наших клиентов мапить результат на указанную дто-шку
@ -0,0 +22,4 @@
/// <inheritdoc/>
public async Task<int> AddRange(Guid discriminatorId, IEnumerable<TimestampedValuesDto> dtos, CancellationToken token)
{
foreach (var dto in dtos)
Owner

здесь пока указать to do для будущего рефакторинга, потому как в цикле обращаться к базе, несмотря на наличие кеша как-то не очень.
Никита сказал, что это дело не первой важности, поэтому пока todo

здесь пока указать to do для будущего рефакторинга, потому как в цикле обращаться к базе, несмотря на наличие кеша как-то не очень. Никита сказал, что это дело не первой важности, поэтому пока todo
on.nemtina approved these changes 2025-01-21 16:33:33 +05:00
on.nemtina left a comment
Owner

Рецензия - 2

Рецензия - 2
@ -0,0 +103,4 @@
var dateEnd = dateBegin.AddSeconds(intervalSec);
result = result
.Where(i => i.Item1 <= dateEnd);
Owner

Вот тут немного не понятно: данные фильтруются по dateBegin и dateEnd.
Но фильтрация по dateBegin предполагает строгое неравенство (метод GetGtDate), а фильтрация по dateEnd - нестрогое (i => i.Item1 <= dateEnd).

Может, так и должно быть...

Вот тут немного не понятно: данные фильтруются по dateBegin и dateEnd. Но фильтрация по dateBegin предполагает строгое неравенство (метод GetGtDate), а фильтрация по dateEnd - нестрогое (i => i.Item1 <= dateEnd). Может, так и должно быть...
Author
Collaborator

Логику я не менял. Вероятно, так должно быть

Логику я не менял. Вероятно, так должно быть
@ -0,0 +131,4 @@
Timestamp = entity.Item1.ToUniversalTime()
};
var identity = systemSpecification!.PropNames;
Owner

Эту строчку можно вынести за пределы массива

Также, чтобы из избавиться от лишнего цикла по identity внутри цикла по dtos, то можно за пределы внешнего цикла вынести вот это:
var identityValues = identity.Select((value, index) => new { index, value });

А внутри цикла инициализировать dto.Values так:
dto.Values = identityValues.ToDictionary(x => x.value, x => entity.Item2[x.index]);

Ну это, как вариант (можно спросит у Никиты)

Эту строчку можно вынести за пределы массива Также, чтобы из избавиться от лишнего цикла по identity внутри цикла по dtos, то можно за пределы внешнего цикла вынести вот это: var identityValues = identity.Select((value, index) => new { index, value }); А внутри цикла инициализировать dto.Values так: dto.Values = identityValues.ToDictionary(x => x.value, x => entity.Item2[x.index]); Ну это, как вариант (можно спросит у Никиты)
rs.efremov added 1 commit 2025-01-22 15:16:28 +05:00
Правки по результатам ревью
Some checks failed
Unit tests / test (push) Failing after 1m2s
3262201973
rs.efremov added 1 commit 2025-01-22 16:14:01 +05:00
Правки после ревью
Some checks failed
Unit tests / test (push) Failing after 2m51s
4af65e258b
rs.efremov added 1 commit 2025-01-22 16:30:37 +05:00
Фикс настроек
Some checks failed
Unit tests / test (push) Failing after 54s
95859f3d60
on.nemtina merged commit a42a875e70 into master 2025-01-22 16:44:04 +05:00
on.nemtina deleted branch TimestampedValuesRepository 2025-01-22 16:44:04 +05:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: on.nemtina/persistence#19
No description provided.