Еще не запускал но дизель оказался не страшный
diesel::insert_into(settings::table)
.values(&setting)
.on_conflict(key)
.do_update()
.set(value.eq(excluded(value)))
.execute(&mut conn)
.context("Error saving new post")?;
правда генерит всякое и надо утилиту запускать, но я подозреваю можно и обойтись, разбираться не стану пока что.
так как там пока запросов немного, лучше сейчас. Зато теперь не надо писать всякий мусороклеевой код тоннами на каждый чих. Попробую и если что верну rusqlite и где-то там была либа, которая может модели в параметры превращать автоматом...можно заюзать ее. Квери билдеры я не шибко люблю, но попробую.
Конечно мне не нравится, что diesel строит AST каждый раз и только потом вроде как решает, что запрос уже построен и можно переиспользовать, но погляжу как это будет на практике, на самом деле эндпоинты в этих системах отвечают долго и прям быстрого ответа не требуют, так что может и пойдет.
Не нравится только, что что бы метаданные для схем генерить утилита нужна, либо руками писать. Жаль они макрос не сделали для этого, который бы автоматом все делал. Но в целом пойдет.