我试图实现某种形式的repsertBy
:repsert
其中键是提供的唯一,在等行getBy
中upsertBy
。
我的方法:在upsertBy
. 现在upsertBy
需要一个唯一约束、一条记录和一个更改列表,以在唯一冲突的情况下应用。为了实现repsertBy
,我希望该更改列表是“将所有字段分配给新值”。
repsertBy :: (MonadIO m, PersistRecordBackend record backend)
=> Unique record -> record
-> ReaderT backend m (Entity record)
repsertBy unique record = upsertBy unique record [ entifyField =. value | … ]
我被困住了。
我可以通过调用toPersistValue
记录的toPersistFields
. 但是我从哪里可以得到EntityField
s?
我原以为它们可以在实体定义的某个地方èntityDef
找到,但到目前为止还没有找到。我尝试与实际后端的替换和更新实现进行比较,但只发现了 SQL 级别的字符串碰撞。
我目前正在手动拼写字段,但有时我会在实体中添加一个而忘记在repsertBy
. 有什么办法可以访问EntityField
s吗?