Я пытаюсь написать persistent
upsert
с эффектом: «вот та же запись; заполните nullables, если есть больше информации, чем раньше. ”
Сейчас я строю запрос следующим образом:
updateNullableField :: PersistField a =>
EntityField v (Maybe a) -> Maybe a -> Maybe (Update v)
updateNullableField field = fmap ((field =.) . Just)
upsertRecord_ :: MyEntity -> SqlPersistT IO ()
upsertRecord_ record = void $ do
upsert record $ catMaybes [
updateNullableField MyEntityField (myEntityField record)
{- ...and other nullable fields -}
]
Содержание этого списка определенно похоже на то, что оно может быть автоматизировано или даже лучше, вывод. Достаточно ли информации доступно через сгенерированные классы типов? Я просмотрел все и не нашел пути, но трудно быть уверенным в том, что все типы волхвов c существуют.
В качестве альтернативы, эта функциональность уже доступна в некотором пакете, которого у меня нет? т нашли? Этот вариант использования выглядит достаточно стандартным:)