Еще не запускал но дизель оказался не страшный
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 каждый раз и только потом вроде как решает, что запрос уже построен и можно переиспользовать, но погляжу как это будет на практике, на самом деле эндпоинты в этих системах отвечают долго и прям быстрого ответа не требуют, так что может и пойдет.