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()` | 精确匹配:`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({ configration?, parser? })` | 全文搜索查询,只支持 PostgreSQL,会自动建索引 |
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}") @@ to_tsquery('${configurationName}', :${typeormField})`, {
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":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/decorators/query.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export interface QueryFullTextColumnOptions {
2
2
  configuration?: string;
3
3
  parser?: string;
4
+ tsQueryFunction?: string;
4
5
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nicot",
3
3
  "description": "Nest.js interacting with class-validator + OpenAPI + TypeORM for Nest.js Restful API development.",
4
- "version": "1.1.15",
4
+ "version": "1.1.16",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {