nicot 1.1.15 → 1.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -204,18 +204,41 @@ NICOT 提供了一套查询装饰器,用于在 Entity 字段上声明支持的
|
|
|
204
204
|
|
|
205
205
|
### ✅ 内建查询装饰器
|
|
206
206
|
|
|
207
|
-
| 装饰器名
|
|
208
|
-
|
|
209
|
-
| `@QueryEqual()`
|
|
210
|
-
| `@QueryLike()`
|
|
211
|
-
| `@QuerySearch()`
|
|
212
|
-
| `@QueryMatchBoolean()`
|
|
213
|
-
| `@QueryEqualZeroNullable()`
|
|
214
|
-
| `@QueryGreater(field)`
|
|
215
|
-
| `@QueryLess(field)`
|
|
216
|
-
| `@QueryGreaterOrEqual(field)`
|
|
217
|
-
| `@QueryLessOrEqual(field)`
|
|
218
|
-
| `@QueryFullText(
|
|
207
|
+
| 装饰器名 | 查询效果 |
|
|
208
|
+
|-------------------------------|------------------------------------------|
|
|
209
|
+
| `@QueryEqual()` | 精确匹配:`WHERE field = :value` |
|
|
210
|
+
| `@QueryLike()` | 前缀模糊匹配:`WHERE field LIKE :value%` |
|
|
211
|
+
| `@QuerySearch()` | 宽泛模糊搜索:`WHERE field LIKE %:value%` |
|
|
212
|
+
| `@QueryMatchBoolean()` | `true/false/1/0` 转换为布尔类型查询 |
|
|
213
|
+
| `@QueryEqualZeroNullable()` | `0 → IS NULL`,否则 `= :value`(适合 nullable) |
|
|
214
|
+
| `@QueryGreater(field)` | 大于查询:`WHERE field > :value` |
|
|
215
|
+
| `@QueryLess(field)` | 小于查询:`WHERE field < :value` |
|
|
216
|
+
| `@QueryGreaterOrEqual(field)` | 大于等于查询:`WHERE field >= :value` |
|
|
217
|
+
| `@QueryLessOrEqual(field)` | 小于等于查询:`WHERE field <= :value` |
|
|
218
|
+
| `@QueryFullText(options)` | 全文搜索查询,只支持 PostgreSQL,会自动建索引 |
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
### 全文搜索
|
|
223
|
+
|
|
224
|
+
利用 `@QueryFullText(options)` 装饰器,可以在 PostgreSQL 中实现全文搜索。
|
|
225
|
+
|
|
226
|
+
程序启动的时候,会自动创建索引。不需要加 `@Index()`。
|
|
227
|
+
|
|
228
|
+
```ts
|
|
229
|
+
@StringColumn(255)
|
|
230
|
+
@QueryFullText({
|
|
231
|
+
configuration: 'english', // 使用 postgres 搜索配置
|
|
232
|
+
tsQueryFunction: 'websearch_to_tsquery'// 使用的 tsquery 函数。默认为 websearch_to_tsquery
|
|
233
|
+
})
|
|
234
|
+
englishContent: string;
|
|
235
|
+
|
|
236
|
+
@StringColumn(255)
|
|
237
|
+
@QueryFullText({
|
|
238
|
+
parser: 'zhparser', // 使用中文分词器。NICOT 自动管理配置。需要手动给 postgres 添加中文分词器
|
|
239
|
+
})
|
|
240
|
+
simpleContent: string;
|
|
241
|
+
```
|
|
219
242
|
|
|
220
243
|
---
|
|
221
244
|
|
|
@@ -37,13 +37,14 @@ const QueryFullText = (options = {}) => {
|
|
|
37
37
|
const configurationName = options.parser
|
|
38
38
|
? `nicot_parser_${options.parser}`
|
|
39
39
|
: options.configuration || 'english';
|
|
40
|
+
const tsQueryFunction = options.tsQueryFunction || 'websearch_to_tsquery';
|
|
40
41
|
return (0, nesties_1.MergePropertyDecorators)([
|
|
41
42
|
(0, exports.QueryCondition)((obj, qb, entityName, key) => {
|
|
42
43
|
if (obj[key] == null)
|
|
43
44
|
return;
|
|
44
45
|
const fieldName = key;
|
|
45
46
|
const typeormField = key;
|
|
46
|
-
qb.andWhere(`to_tsvector('${configurationName}', "${entityName}"."${fieldName}") @@
|
|
47
|
+
qb.andWhere(`to_tsvector('${configurationName}', "${entityName}"."${fieldName}") @@ ${tsQueryFunction}('${configurationName}', :${typeormField})`, {
|
|
47
48
|
[typeormField]: obj[key],
|
|
48
49
|
});
|
|
49
50
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/decorators/query.ts"],"names":[],"mappings":";;;AACA,kDAA+C;AAC/C,wCAMoB;AAEpB,qCAAkD;AAE3C,MAAM,cAAc,GAAG,CAAC,IAAe,EAAE,EAAE,CAChD,mBAAQ,CAAC,GAAG,CACV,gBAAgB,EAChB,IAAI,EACJ,sBAAsB,CACF,CAAC;AALZ,QAAA,cAAc,kBAKF;AAClB,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,4BAAkB,CAAC,CAAC;AAAtD,QAAA,UAAU,cAA4C;AAC5D,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,gCAAsB,CAAC,CAAC;AAAzD,QAAA,SAAS,aAAgD;AAC/D,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,kCAAwB,CAAC,CAAC;AAA7D,QAAA,WAAW,eAAkD;AAEnE,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,IAAA,sBAAc,EAAC,wCAA8B,CAAC,CAAC;AADpC,QAAA,sBAAsB,0BACc;AAE1C,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,gCAAsB,CAAC,CAAC;AAAjE,QAAA,iBAAiB,qBAAgD;AAEvE,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,KAAc,EAAE,EAAE,CAChE,IAAA,sBAAc,EAAC,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE;IAC1C,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;QAAE,OAAO;IAC7B,MAAM,SAAS,GAAG,KAAK,IAAI,GAAG,CAAC;IAC/B,MAAM,YAAY,GAAG,mBAAmB,UAAU,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;IACzE,EAAE,CAAC,QAAQ,CAAC,GAAG,UAAU,IAAI,SAAS,IAAI,QAAQ,KAAK,YAAY,EAAE,EAAE;QACrE,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;KACzB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AARQ,QAAA,aAAa,iBAQrB;AAEE,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE,CAC1E,IAAA,qBAAa,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AADpB,QAAA,mBAAmB,uBACC;AAEpB,QAAA,YAAY,GAAG,IAAA,2BAAmB,EAAC,GAAG,CAAC,CAAC;AACxC,QAAA,iBAAiB,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;AAC9C,QAAA,SAAS,GAAG,IAAA,2BAAmB,EAAC,GAAG,CAAC,CAAC;AACrC,QAAA,cAAc,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,aAAa,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;AAEhD,MAAM,aAAa,GAAG,CAAC,UAAsC,EAAE,EAAE,EAAE;IACxE,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM;QACtC,CAAC,CAAC,gBAAgB,OAAO,CAAC,MAAM,EAAE;QAClC,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC;IACvC,OAAO,IAAA,iCAAuB,EAAC;QAC7B,IAAA,sBAAc,EAAC,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE;YAC1C,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;gBAAE,OAAO;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC;YACtB,MAAM,YAAY,GAAG,GAAG,CAAC;YAEzB,EAAE,CAAC,QAAQ,CACT,gBAAgB,iBAAiB,OAAO,UAAU,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/decorators/query.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED