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