Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавить поддержку кастомных типов атрибутов в моделях #1221

Open
mao29 opened this issue Nov 3, 2020 · 0 comments

Comments

@mao29
Copy link

mao29 commented Nov 3, 2020

Цель

Дать прикладным разработчикам возможность описывать в дизайнере собственные типы данных и реализовывать корректную работу с полями таких типов на фронтенде.

Функциональные требования

  1. Необходимо реализовать возможность описать маппинг для класса со стереотипом typedef на диаграмме классов на некий кастомный тип в генерируемых метаданных модели
  2. При генерации модели из метаданных по блюпринту в сгенерированный миксин модели должен проставляться attr заданного типа
  3. Очень хотелось бы иметь блюпринт для генерации кастомного ember-flexberry-friendly трансформа. Под ember-flexberry-friendly понимается генерация, помимо самого файла трансформа и тестов для него, файлов заготовок для реализации корректной работы с атрибутами данного типа в построителе url-а запроса, в построителе предикатов, в фильтрах ОЛВ, в построителе тела post-запроса. Общая цель в том, чтобы атрибуты данного типа корректно сериализовывались/десериализовывались, а также по ним строились корректные предикаты. Возможно есть еще места, где тип атрибута модели влияет на логику работы с этим атрибутом.

Требования к реализации

  1. На начальном этапе видится что можно добавить в метаданные файл с картой типов для фронтенда, чтобы разработчик мог вручную его править и была его поддержка в блюпринтах моделей. Следующим шагом можно реализовать генерацию такого файла при инициализации эмбер приложения. И затем уже можно будет добавить возможность редактирования этой карты типов в сам дизайнер. Единственное, надо как-то реализовать, чтобы в метаданные вгенерировалась информация, что для определенного поля модели указан тип с typedef и требуется при генерации использовать карту типов. Судя по всему сейчас в файл метаданных генерируется flexberryType, который как будто бы в блюпринте не используется, а при этом туда попадает как раз имя типа, указанное для поля в дизайнере. Можно на основе flexberryType сделать.
  2. Нужно поискать по коду ember-flexberry и ember-flexberry-data где есть логика, зависящая от типа атрибута, и придумать как в эти места добавить возможность расширения. После этого придумать каким образом автоматизировать и упростить для прикладного разработчика добавление собственного typedef-а на фронтенде. В идеале - чтобы достаточно было описать typedef в модели и для этого типа генерился прямо из дизайнера transform и расширения всех мест, где тип атрибута влияет на логику.

Исходный код

ember-flexberry
ember-flexberry-data

Документация

  1. Добавить описание работы с картой типов
  2. Добавить описание того, как правильно создать transform для кастомного типа данных и в каких местах нужно не забыть переопределить логику его обработки

Тесты

Предлагаю для тестирования добавить какой-нибудь кастомный тип данных, трансформацию для него, переопределение построения url, тела запроса, предикатов для него и покрыть тестами что это переопределение работает.

Аналоги, примеры реализации

См. пример добавления кастомного типа данных date-only (дата без времени) на проекте СпортПрикамье. Прямо поиском по репозиторию находятся места, где есть переопределенная логика для него. Не гарантируется что реализация полна, возможно есть еще места, где атрибут не работает и это еще не обнаружили.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant