Support for overlaps json operator
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 55/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 停滞
- 技術スタック
- javascript, postgresql
- 領域
- databases
調査の方向性
lib/postgresql.js の 553 行目付近にある既存の配列演算子処理と、test/postgresql.test.js の関連するケースから始めます。issue の例を使って filter する場合の重複に対するカバレッジを追加し、その後 README.md の 601 行目付近にある演算子のドキュメントを更新します。テストがパスし、PostgreSQL の配列の重複動作がドキュメント化されていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Suggestion
The connector support the "contains" json/array operator. This operator select rows which contain ALL value in the array.
I propose the support the "overlaps" json/array operator. This operator select rown which contain ANY value in the array.
Use Cases
With this feature, you will be able to use the JSON Array [array operator &&] operator from PostgreSQL(https://www.postgresql.org/docs/current/functions-array.html).
Examples
Row 1: [ A, B]
Row 2: [C, D]
Row 3: [E, A, B ]
Look for any row which overlaps with [C, F] => Should return Row 2
Acceptance criteria
- Doc
- Test
- Code
It is very easy to implement. Unfortunately, I don't know how to use correctly GitHub for PR. So, I can provide code, and i hope someone will be able to PR it.
/test/postgresql.test.js line 294 -------------
it('should support the "overlaps" where filter for array type field', async () => {
await Post.create({
title: 'Overlaps: LoopBack Participates in Hacktoberfest',
categories: ['OL_LoopBack', 'OL_Announcements'],
});
await Post.create({
title: 'Overlaps: Growing LoopBack Community',
categories: ['OL_LoopBack', 'OL_Community'],
});
const found = await Post.find({where: {and: [
{
categories: {'overlaps': ['OL_Super', 'OL_Community']},
},
]}});
found.map(p => p.title).should.deepEqual(['Overlaps: Growing LoopBack Community']);
});
/lib/postgresql.js, line 553 ------------------------------------------------------
case 'overlaps':
return new ParameterizedSQL(columnName + ' && array[' + operatorValue.map(() => '?') + ']::'
+ propertyDefinition.postgresql.dataType,
operatorValue);
case 'contains':
return new ParameterizedSQL(columnName + ' @> array[' + operatorValue.map(() => '?') + ']::'
+ propertyDefin
README.md line 601---------------------------------------------------
Operator overlaps
The overlaps operator allow you to query array properties and pick only
rows where the stored value contains any of the items specified by the query.
The operator is implemented using PostgreSQL array operator &&.
Note The fields you are querying must be setup to use the postgresql array data type - see Defining models above.
- 主要言語
- JavaScript
- スター
- 118
- フォーク
- 183
- 平均マージ
- 3日 7時間
- マージ済み PR(30日)
- 9
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
loopbackio/loopback-connector-postgresql のほかの issue
-
Partial JSON Update対応中かも @vaibhavbhalla2505 が 264 日前に担当しました。 オープンfeature
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
loopbackio/loopback-connector-postgresql#748 · コメント 1 件 ·
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 38/100
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
loopbackio/loopback-connector-postgresql#732 · コメント 1 件 ·
loopbackio/loopback-connector-postgresql の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
XRPLF/xrpl-dev-portal#4000 ·
メンテナーはふだん 1 日以内に返信
-
accessibility good first issue
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
メンテナーはふだん 1 日以内に返信
-
[BUG] Bubble chart series name is not XML-escaped in the embedded workbook (xl/tables/table1.xml)オープン
難易度 1/5 1時間未満 初心者へのやさしさ 94/100
-
Content:Learn needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
anoopcodehack/DevBoard#609 ·
メンテナーはふだん 1 日以内に返信