問題タブ [esqueleto]

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 に答える
731 参照

haskell - esqueleto で行を数える

Esqueleto (バージョン 2.1.2.1) で内部結合の行をカウントしようとしています。残念ながら、私のコードはコンパイルされず、その理由がわかりません。これを行う方法の次の例を見ましたが、何が間違っているのかわかりませんでした: example1example2

私のスキーマは次のようになります(簡略化):

ユーザーはサイトに登録してゲームをプレイできます。登録しなくても遊べます。したがって、別のテーブルがありますPlayer。ゲームには状態があります。Ongoing、または何らかの形のゲームオーバーになる可能性があります。ユーザーがプレイしている進行中のゲームをすべて数えたいと思います。

次の SQL クエリは、これをうまく実行します (userId が 1 に固定されている場合)。

ただし、次の Esqueleto クエリはコンパイルされません。

エラーメッセージは次のようになります。

ただし、を削除すると、まったく同じクエリが機能しますcountRows。つまり、次のコードはコンパイルされ、私がやりたいことを実行します。

私は何を間違っていますか?

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

haskell - Persistent で SQL ステートメントの自動ロギングを有効にする方法

この質問に対する明確な答えを探しましたが、まだ見つけることができませんでした - 永続的に実行されている SQL ステートメントの自動ロギングを有効にするにはどうすればよいですか? 誰かがこのための小さなサンプルプログラムを教えてもらえますか?

以下は、現在ログを記録していないプログラムの例です。ログインを有効にするにはどうすればよいですか?

0 投票する
0 に答える
125 参照

postgresql - Esqueleto/Persistent で Postgres テーブル スキーマを指定する

Postgres で Esqueleto を使用していますが、テーブルが存在するスキーマを指定する方法がわかりません。現在、次の SQL を発行してスキーマを設定しています。

これにより、テーブルがスキーマ foo またはスキーマ バーにある限り、必要なテーブルを使用できます。各テーブルのスキーマを設定する方法はありますか?

0 投票する
2 に答える
241 参照

haskell - esqueleto で Int と double の値を乗算しますか?

私が直面している問題は非常に単純です。基本的に、Int と Double の積を計算しようとしています。プレーンな Haskell では、実行するだけです

しかし、esqueleto でそれを行う方法がわかりません。Int 型の列「金額」を持つテーブル B と、Double 型の列「価格」を持つテーブル C があります。両方を抽出して積を計算しようとすると、このように

タイプエラーが発生します(予想どおり):

私を助けてくれたドキュメントには何も見つかりませんでした。実際にどうすればよいのかわかりません。(詳細なコードについては、以下の完全な例を参照してください)。

考えられる解決策: もちろん、価格を Int として保存することもできますが、これが esqueleto で実行できるかどうかに興味があります。

完全な例:

データベース:

表 A: ID|名前

表 B: Id|AId|BId|Amount で、Amount は Int で、AId と BId は表 A と B への参照です。

表 C: Id|Name|Price 、これは Price a Double です

私が書いたクエリは次のとおりです。

編集

私はこのように使用してみましfmapfromIntegral

その結果、次の 2 つのエラーが発生します No instance for (Functor SqlExpr)No instance for (Num (Value Double))

コメント(@Thomas M. DuBuissonによる)で示唆されているように、私は試しました:

これで 2 番目の問題は解決しますが、それでもNo instance for (Functor SqlExpr).

編集2

これについては、Yesod メーリング リストで質問しました。議論はここで見つけることができます。

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

sql - Esqueleto クエリで not (または when) を使用する方法は?

いくつかのテーブルを結合し、 1 つのフィールドがequalsでない限り結果をさらに制限するクエリを作成します。IncludeAllTrue

こんな感じで書いてみました

しかし、次のエラーが表示されます

の最初の引数で、予想される型Boolと実際の型を一致させることができませんでしたDatabase.Esqueleto.Internal.Language.Value Boolunless

だから、unValueどういうわけかトリックをしません。実際、 のようなものb ^. BIncludeAllは typeを持っていexpr (Value a)ます。

ソースの の定義をSqlExpr見ても、私には役に立ちませんでした。

それはADTです:

PS: SQL バックエンドを使用していますが、理想的には問題にならないはずですよね?

0 投票する
0 に答える
39 参照

haskell - == に関する Database.Esqueleto なぞなぞ。真の値

予期せず空のリストを返すクエリをデバッグしているときに、何かばかげたことを書いていることに気付きました。

...== True任意のブール値に追加できるためです。それを次のように置き換えると、予想外に問題が解決し、結果は空のリストではなくなりました。

2つの実際の違いについて誰でも教えてもらえますか? なぜあるのでしょうか?

編集: データベースのバックエンドは sqlite です。

0 投票する
2 に答える
137 参照

database - esqueleto クエリで比較前に関数を適用する方法

そのような単純なクエリの場合

フィールド値を「x」と比較する前に関数を適用したい。その理由は、データベース内のセル コードの末尾にスペースがあり、たとえばstrip fromを使用してそれらを削除する以外に簡単なことはないからData.Textです。fmapただし、 (2回)使用するという私の最初のアプローチは、

Esqueleto が提供する のようなjust、具体的に同様のことを実現する関数があることは知っています (ただし、 の実装は見つかりませんでしjustた)。

パックされた値に関数を適用する方法はありますか?

執筆中: 私の特定のケースでは、like.

編集:適用したい特定の機能を追加しました。