чуть сложнее круда, и вот понять не могу.
допустим, есть в колонке json, который на загрузке нужно гидратировать - ну там тег структуры проставить, типы данных сконвертить, замыкания сгенерить.
ну и соответственно, на персисте это нужно обратно дегидратировать.
есть какая-то общепринятая практика, как такой код вписывать?
есть embedded_schema, но она очень тупая, и не позволяет сложенную структуру разложить, например, на три поля(tag, vsn, data).
Плохо понимаю что значит "на загрузке" и что значит "гидратировать"
превратить json в рантаймовые данные - дополнить(map -> struct), изменить представление(string -> timestamp), оптимизировать(data + meta -> closure). на загрузке - ну так и есть, между получением столбца из базы и использованием его в бизнес-коде.
кастомные типы же есть?..
Для map -> struct есть embedded_load, а вообще это просто при загрзке embedded_schema-ы автоматически происходит
а если мне не хватает embedded_schema?
data + meta -> closure это XY, потому что можно и не хранить код в базе
А чего не хватает? Я так и не понял из твоего описания что значит > не позволяет сложенную структуру разложить, например, на три поля(tag, vsn, data).
Или кастомные типы, или на уровне вьюхи. Зависит от юзкейса
опиши "на уровне вьюхи" подробнее
Вообще есть блобджейсон
Эти данные могут быть просто map’ой. На уровне вью, ты рендеришь одно в данные понятные клиентам. На входе в приложение конвертишь в данные, с которыми удобно работать. Если данные имеют четкую структуру, валидируй и конвертируй в структуры на входе. В ecto подставляй то что тебе нужно: schema, embedded_schema
Обсуждают сегодня