問題タブ [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.

0 投票する
1 に答える
232 参照

scala - Scala (doobie): 型は不変です

私は Scala とdoobieを使ったプロジェクトに取り組んでいます。MacWireによって注入され、さまざまな Task/Future モナド (テストなど) で使用される可能性のあるトランザクション特性を実装しようとしています。

しかし、私はこのエラーが発生します:

Taskとして定義されているため機能しますTask[+A]が、ドゥービーはIOLiteとして定義されていIOLite[A]ます。これを機能させる方法はありますか?または、代わりに別のモナドタイプを使用する必要ありますか (doobie テストにはTask変更できません)。IOLite

0 投票する
1 に答える
3451 参照

scala - 1トランザクション内でのDoobieとDBアクセス構成

Doobie bookによると、リポジトリ レイヤーから ConnectionIO を返すことをお勧めします。これにより、呼び出しをチェーンして 1 つのトランザクションで実行することができます。素晴らしくクリア。

ここで、REST API サービスに取り組んでおり、シナリオが次のようになっているとします。

  1. データベースでオブジェクトを見つける
  2. このオブジェクトで (cats.effect.IO または monix.eval.Task を使用して) 非同期操作を実行します。
  3. オブジェクトをデータベースに格納します。

そして、これらすべてのステップを 1 つのトランザクション内で実行したいと考えています。問題は、 によって与えられる自然な変換がなければ、transactor.trans()2 つのモナド内で作業していることです -TaskConnectionIO. それは可能ではありません。

ConnectionIO問題は、1つのトランザクションで作業していて、世界の終わりにすべてのDBミューテーションをコミット/ロールバックできるように、1つのコンポジションでdoobieとエフェクトモナドをどのように混在させるかです?

ありがとうございました!

UPD:小さな例

UPD2: @oleg-pyzhcov が提供する正しい答えは、効果のデータ型をConnectionIO次のように持ち上げることです。

0 投票する
1 に答える
354 参照

sql - Scala Doobie クエリのハードコードされた値

Doobie で次のクエリを記述する場合:

データのリストがあります。たとえば、可変サイズのList(1,2,3,4) です。Doobie を使用して値のリストを SQL VALUES CLAUSE に補間するにはどうすればよいですか?