#958 Перенести DD.Persistence.Repository + доработать схему данных #25

Merged
on.nemtina merged 1 commits from RepositoriesRework into master 2025-02-06 15:53:37 +05:00
Collaborator
No description provided.
rs.efremov added 2 commits 2025-02-05 09:57:56 +05:00
ng.frolov was assigned by rs.efremov 2025-02-05 09:58:11 +05:00
on.nemtina was assigned by rs.efremov 2025-02-05 09:58:11 +05:00
on.nemtina approved these changes 2025-02-05 11:50:07 +05:00
on.nemtina left a comment
Owner

Необходимо репозитории перетащить в проект с DD.Persistence.Database

Необходимо репозитории перетащить в проект с DD.Persistence.Database
@ -0,0 +59,4 @@
// OperationEnum.And,
// new TLeaf(OperationEnum.Equal, "A", 1),
// new TLeaf(OperationEnum.Equal, "B", 1)
//);
Owner

Эти комментарии лучше стереть

Эти комментарии лучше стереть
@ -98,3 +95,4 @@
var resultToMaterialize = new[] { KeyValuePair.Create(discriminatorId, result) }
.ToDictionary();
var dtos = await Materialize(resultToMaterialize, token);
Owner

На метод Materialize установить todo, так как его нужно рефакторить

На метод Materialize установить todo, так как его нужно рефакторить
@ -174,0 +185,4 @@
{
var valueString = e.Value.ToString();
if (valueString is null)
Owner

А если valueString - пустая строка? Может, лучше использовать String.IsNullOrEmpty?

А если valueString - пустая строка? Может, лучше использовать String.IsNullOrEmpty?
ng.frolov requested changes 2025-02-05 12:15:10 +05:00
@ -18,2 +25,4 @@
return services;
}
public static void MapsterSetup()
Collaborator

Добавить TODO с переносом этого метода в другой файл.
Зона ответственности этого файла - регистрация сервисов в DI

Добавить TODO с переносом этого метода в другой файл. Зона ответственности этого файла - регистрация сервисов в DI
@ -0,0 +1,103 @@
//using DD.Persistence.Models;
//using DD.Persistence.Models.Common;
//using DD.Persistence.Repositories;
Collaborator

удалить

удалить
@ -12,4 +13,7 @@ public class DataScheme
[Comment("Наименования полей в порядке индексации"), Column(TypeName = "jsonb")]
public string[] PropNames { get; set; } = [];
Collaborator

нормализовать табличку.
добавить свойство индекса, DiscriminatorId и новый индекс == композитный ключ.
каждое свойство каждой модели будет занимать одну строчку в этой табличке.

нормализовать табличку. добавить свойство индекса, DiscriminatorId и новый индекс == композитный ключ. каждое свойство каждой модели будет занимать одну строчку в этой табличке.
@ -14,4 +14,9 @@ public class DataSchemeDto
/// Наименования полей
/// </summary>
public string[] PropNames { get; set; } = [];
Collaborator

Стоит завести отдельный класс с описанием свойства (имя и тип), в этом классе схемы хранить словарь этих классов

Стоит завести отдельный класс с описанием свойства (имя и тип), в этом классе схемы хранить словарь этих классов
@ -0,0 +3,4 @@
/// <summary>
/// Типы для набора данных
/// </summary>
public enum PropTypeEnum
Collaborator

см. System.Text.Json.JsonValueKind
Там те типы, которые тебе доступны при получении исходных данных.
нужны не все.

см. System.Text.Json.JsonValueKind Там те типы, которые тебе доступны при получении исходных данных. нужны не все.
rs.efremov added 1 commit 2025-02-05 12:19:52 +05:00
rs.efremov added 2 commits 2025-02-05 17:20:23 +05:00
rs.efremov added 1 commit 2025-02-06 09:31:16 +05:00
on.nemtina approved these changes 2025-02-06 11:23:34 +05:00
@ -17,0 +34,4 @@
/// <inheritdoc/>
public bool Equals(IEnumerable<SchemePropertyDto>? otherProperties)
{
//if (otherProperties is null)
Owner

otherProperties могут быть null, поэтому, может, эти закоментированые строчки нужно раскоментировать?

otherProperties могут быть null, поэтому, может, эти закоментированые строчки нужно раскоментировать?
@ -152,2 +146,2 @@
var systemSpecification = await dataSchemeRepository.Get(discriminatorId, token);
if (systemSpecification is null)
var valuesList = dto.Values.ToList();
var properties = valuesList.ToList().Select(e => new SchemePropertyDto() {
Owner

Можно так переписать:
var properties2 = valuesList.Select((e, index) => new SchemePropertyDto()
{
Index = index,
PropertyName = e.Key,
PropertyKind = ((JsonElement)e.Value).ValueKind
});

  • valuesList.ToList() - это не надо делать, потому как valuesList - это уже List
  • Index = valuesList.IndexOf(e) - так тоже можно не делать, метод IndexOf дополнительно высчитывает индекс, а индекс уже известен здесь: .Select((e, index) => {...})
  • В конце .ToArray() тоже не нужно делать. Путь будет IEnumerable и именно этот тип данных передавать в конструктор DataSchemeDto
Можно так переписать: var properties2 = valuesList.Select((e, index) => new SchemePropertyDto() { Index = index, PropertyName = e.Key, PropertyKind = ((JsonElement)e.Value).ValueKind }); - valuesList.ToList() - это не надо делать, потому как valuesList - это уже List - Index = valuesList.IndexOf(e) - так тоже можно не делать, метод IndexOf дополнительно высчитывает индекс, а индекс уже известен здесь: .Select((e, index) => {...}) - В конце .ToArray() тоже не нужно делать. Путь будет IEnumerable и именно этот тип данных передавать в конструктор DataSchemeDto
rs.efremov changed title from #958 Перенести DD.Persistence.Repository + доработать схему данных to WIP: #958 Перенести DD.Persistence.Repository + доработать схему данных 2025-02-06 11:58:12 +05:00
rs.efremov added 1 commit 2025-02-06 12:39:47 +05:00
rs.efremov changed title from WIP: #958 Перенести DD.Persistence.Repository + доработать схему данных to #958 Перенести DD.Persistence.Repository + доработать схему данных 2025-02-06 12:41:09 +05:00
rs.efremov added 1 commit 2025-02-06 15:52:09 +05:00
on.nemtina merged commit 5ce5fa139b into master 2025-02-06 15:53:37 +05:00
on.nemtina deleted branch RepositoriesRework 2025-02-06 15:53:37 +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#25
No description provided.