Постоянный - генерация предложений обновления из полей и содержимого - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь написать 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 существуют.

В качестве альтернативы, эта функциональность уже доступна в некотором пакете, которого у меня нет? т нашли? Этот вариант использования выглядит достаточно стандартным:)

...