Created DTO logic #3
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jezv/VolovikovASPNET!3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/dto"
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?
Структура такая:
Внутри DTO модели есть метод Map, который заполняет её по значениям из БД.
Метод Map реализует цепочку обязаностей из 3-ёх звеньев:
OperationHandler - создаёт Enum операции по айди,
IdHandler - заполняет соответсвующий айди от типа операции,
FieldsHandler - заполняет все остальные поля, согласно их названиям из кастомного атрибута
Код нужно доделывать. Значительно.
@ -0,0 +1,10 @@namespace Src.PersonalAccount.Domain.Core;public abstract class DTOBaseОформление кода.
https://gitverse.ru/VolovikovAlexander/PersonalAccount2026/content/master/_docs/CONTRIBUTING.md
Нейминг
@ -0,0 +4,4 @@{public override void HandleRequest(object condition){throw new NotImplementedException();Зачем нужны классы в которых нет реализации?
@ -0,0 +28,4 @@/// <summary>/// Идентификатор сотрудника/// </summary>public uint? EmployeeId { get; set; }Нет атрибутов. Как определяется код сотрудника?
В целом, решение понятно. Принято.
Однако, нужно доработать
День, Месяц, Квартал@ -0,0 +2,4 @@namespace Src.PersonalAccount.Domain.Core;public abstract class DTOBaseКоментарии в код добавьте пжл.
Назначение данного класса? Для чего используется каждое свойство?
@ -0,0 +16,4 @@Attribute = p.GetCustomAttribute<DTOFieldName>()}).Where(f => f.Attribute != null && f.Attribute.FieldType.IsEnum).ToList()Понятное, но спорное решение. Ведь у Вас в каждом Handler разница только в Where
Полагаю, что можно унифицировать.
Но в целом - годиться.
@ -0,0 +158,4 @@var fieldsHandler = new FieldsHandler();var journalHandler = new JournalIdHandler();enumHandler.Successor = fieldsHandler;Вот тут у Вас в тестах - формируется цепочка ответственности. Ок
Но где же решение для:
Тогда сделайте тесты. Так же, можно сделать менеджер класс, который для определенного варианта сформирует нужную цепочку ответственности.
Обработка за один день сделана за 314 ms
Обработка за один месяц сделана за 814 ms
Обработка за один квартал сделана за 438 ms
Короче вся обработка занимает очень мало времени и всё время уходит на задержку обращения к БД, поэтому показатели нестабильные между 300-800 мс везде.
WIP: Created DTO logicto Created DTO logicВ целом хорошо. Запросы не верно. Но не страшно. 99% не верно сделали)
@ -0,0 +23,4 @@using var connect = new SqlConnection(options.ConnectionString);connect.Open();var sql = @"SELECT t2.storeid, t1.PreviewGroupType as transtype, t2.receiptn,Не верно. У Вас согласно запросу не 1, 3, 6 месяцев получится. А три раза ДО указанной даты.