pg-mvc-service 2.0.128 → 2.0.129

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.
@@ -388,32 +388,30 @@ class WhereExpression {
388
388
  japanese: true
389
389
  };
390
390
  }
391
- const objs = {};
391
+ let sql = expression;
392
+ // 1. ひらがな → カタカナ (TRANSLATEを使用)
393
+ // NORMALIZEはひらがなをカタカナにはしないので、これは残します
392
394
  if ((replaceOption === null || replaceOption === void 0 ? void 0 : replaceOption.hiraganaToKatakana) === true) {
393
- objs['あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんゔがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっー、。・「」゛゜']
394
- = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜';
395
+ const from = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんゔがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっー、。・「」゛゜';
396
+ const to = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜';
397
+ sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
395
398
  }
399
+ // 2. 漢数字 → 算用数字 (TRANSLATEを使用)
400
+ // これもNORMALIZEの管轄外なので残しますが、1つのTRANSLATEにまとめます(SQLが速くなります)
396
401
  if (((_a = replaceOption === null || replaceOption === void 0 ? void 0 : replaceOption.numeric) === null || _a === void 0 ? void 0 : _a.japanese) === true) {
397
- objs['零〇'] = '00';
398
- objs['一壱弌'] = '111';
399
- objs['二弐'] = '22';
400
- objs['三参'] = '33';
401
- objs['四肆'] = '44';
402
- objs['五伍'] = '55';
403
- objs['六陸'] = '66';
404
- objs['七漆'] = '77';
405
- objs['八捌'] = '88';
406
- objs['九玖'] = '99';
402
+ const from = '零〇一壱弌二弐三参四肆五伍六陸七漆八捌九玖';
403
+ const to = '001112233445566778899';
404
+ sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
407
405
  }
406
+ // 3. 全角半角の統一 (ここを NORMALIZE に変更!)
407
+ // 元の halfToFull ブロックを削除し、この処理に置き換えます
408
408
  if ((replaceOption === null || replaceOption === void 0 ? void 0 : replaceOption.halfToFull) === true) {
409
- objs['0123456789'] = '0123456789';
410
- objs['アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜']
411
- = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドハハビブベボパピプペポァィゥェォャュョッー、。・「」 ゚';
412
- objs['ABCDEFGHIJKLMNOPQRSTUVWXYZ'] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
413
- objs['abcdefghijklmnopqrstuvwxyz'] = 'abcdefghijklmnopqrstuvwxyz';
409
+ // NORMALIZE(..., NFKC) は以下の処理を自動で行います
410
+ // - 全角英数字 → 半角英数字 (例: A → A)
411
+ // - 半角カナ → 全角カナ (例: ア → ア)
412
+ // - 濁点の結合 (例: カ + ゙ → ガ)
413
+ sql = `NORMALIZE(${sql}, NFKC)`;
414
414
  }
415
- let sql = expression;
416
- Object.keys(objs).forEach(key => sql = `TRANSLATE(${sql} ,'${key}','${objs[key]}')`);
417
415
  return sql;
418
416
  }
419
417
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pg-mvc-service",
3
- "version": "2.0.128",
3
+ "version": "2.0.129",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/n-daira/npm-pack_mvc-service#readme",
6
6
  "bugs": {
@@ -423,36 +423,33 @@ export class WhereExpression {
423
423
  }
424
424
  }
425
425
 
426
- const objs: { [key: string]: string } = {}
426
+ let sql = expression;
427
+ // 1. ひらがな → カタカナ (TRANSLATEを使用)
428
+ // NORMALIZEはひらがなをカタカナにはしないので、これは残します
427
429
  if (replaceOption?.hiraganaToKatakana === true) {
428
- objs['あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんゔがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっー、。・「」゛゜']
429
- = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜';
430
+ const from = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんゔがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっー、。・「」゛゜';
431
+ const to = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜';
432
+ sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
430
433
  }
431
434
 
435
+ // 2. 漢数字 → 算用数字 (TRANSLATEを使用)
436
+ // これもNORMALIZEの管轄外なので残しますが、1つのTRANSLATEにまとめます(SQLが速くなります)
432
437
  if (replaceOption?.numeric?.japanese === true) {
433
- objs['零〇'] = '00';
434
- objs['一壱弌'] = '111';
435
- objs['二弐'] = '22';
436
- objs['三参'] = '33';
437
- objs['四肆'] = '44';
438
- objs['五伍'] = '55';
439
- objs['六陸'] = '66';
440
- objs['七漆'] = '77';
441
- objs['八捌'] = '88';
442
- objs['九玖'] = '99';
438
+ const from = '零〇一壱弌二弐三参四肆五伍六陸七漆八捌九玖';
439
+ const to = '001112233445566778899';
440
+ sql = `TRANSLATE(${sql}, '${from}', '${to}')`;
443
441
  }
444
442
 
443
+ // 3. 全角半角の統一 (ここを NORMALIZE に変更!)
444
+ // 元の halfToFull ブロックを削除し、この処理に置き換えます
445
445
  if (replaceOption?.halfToFull === true) {
446
- objs['0123456789'] = '0123456789';
447
- objs['アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッー、。・「」゛゜']
448
- = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドハハビブベボパピプペポァィゥェォャュョッー、。・「」 ゚';
449
- objs['ABCDEFGHIJKLMNOPQRSTUVWXYZ'] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
450
- objs['abcdefghijklmnopqrstuvwxyz'] = 'abcdefghijklmnopqrstuvwxyz';
446
+ // NORMALIZE(..., NFKC) は以下の処理を自動で行います
447
+ // - 全角英数字 → 半角英数字 (例: A → A)
448
+ // - 半角カナ → 全角カナ (例: ア → ア)
449
+ // - 濁点の結合 (例: カ + ゙ → ガ)
450
+ sql = `NORMALIZE(${sql}, NFKC)`;
451
451
  }
452
452
 
453
- let sql = expression;
454
- Object.keys(objs).forEach(key => sql = `TRANSLATE(${sql} ,'${key}','${objs[key]}')`);
455
-
456
453
  return sql;
457
454
  }
458
455
  }