問題タブ [doobie]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 1トランザクション内でのDoobieとDBアクセス構成
Doobie bookによると、リポジトリ レイヤーから ConnectionIO を返すことをお勧めします。これにより、呼び出しをチェーンして 1 つのトランザクションで実行することができます。素晴らしくクリア。
ここで、REST API サービスに取り組んでおり、シナリオが次のようになっているとします。
- データベースでオブジェクトを見つける
- このオブジェクトで (cats.effect.IO または monix.eval.Task を使用して) 非同期操作を実行します。
- オブジェクトをデータベースに格納します。
そして、これらすべてのステップを 1 つのトランザクション内で実行したいと考えています。問題は、 によって与えられる自然な変換がなければ、transactor.trans()
2 つのモナド内で作業していることです -Task
とConnectionIO
. それは可能ではありません。
ConnectionIO
問題は、1つのトランザクションで作業していて、世界の終わりにすべてのDBミューテーションをコミット/ロールバックできるように、1つのコンポジションでdoobieとエフェクトモナドをどのように混在させるかです?
ありがとうございました!
UPD:小さな例
UPD2: @oleg-pyzhcov が提供する正しい答えは、効果のデータ型をConnectionIO
次のように持ち上げることです。
sql - Scala Doobie クエリのハードコードされた値
Doobie で次のクエリを記述する場合:
データのリストがあります。たとえば、可変サイズのList(1,2,3,4) です。Doobie を使用して値のリストを SQL VALUES CLAUSE に補間するにはどうすればよいですか?