opaleye 是否支持 upsert / INSERT ON CONFLICT?

Does opaleye support upsert / INSERT ON CONFLICT?

我正在尝试创建如下查询:

INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;

但是我看不到如何用 opaleye 做到这一点?这不支持吗?

奇怪的是我们有 Insert defined with a field of iOnConflict :: Maybe OnConflict。但是 OnConflict 被定义为:data OnConflict = DoNothing 所以它现在看起来只是一个占位符?

在 github 上列出的问题之后,我看到它导致了这个最终的 PR:https://github.com/tomjaguarpaw/haskell-opaleye/pull/385/files 但我真的无法理解它?我不确定它是仅实现了占位符,还是实际实现了功能。

首先,如果你 file a new issue on the Opaleye repo.

Opaleye 目前仅支持 ON CONFLICT DO NOTHING。不过,我很高兴考虑支持更多功能。请加入新问题或 a relevant existing one.