utils.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { DataTypeStringEnum } from '@/consts';
  2. export const formatValue = (value: string, type: string, operator: string) => {
  3. let conditionValue: string = ''; //
  4. switch (type) {
  5. case DataTypeStringEnum.VarChar:
  6. conditionValue = `"${value}"`;
  7. break;
  8. case DataTypeStringEnum.JSON:
  9. switch (operator) {
  10. case '<':
  11. case '>':
  12. case '==':
  13. case '>=':
  14. case '<=':
  15. conditionValue = value;
  16. break;
  17. case 'in':
  18. case 'not in':
  19. conditionValue = `[${value}]`;
  20. break;
  21. case 'JSON_CONTAINS':
  22. conditionValue = `${value}`;
  23. break;
  24. default:
  25. conditionValue = `"${value}"`;
  26. break;
  27. }
  28. break;
  29. default:
  30. conditionValue = value;
  31. }
  32. return conditionValue;
  33. };
  34. export const checkValue = (data: any): boolean => {
  35. let isLegal = false;
  36. const regInt = /^-?\d+$/;
  37. const regFloat = /^-?\d+\.\d+$/;
  38. const regIntInterval = /^\[-?\d+(,-?\d+)*\]$/;
  39. const regFloatInterval = /^\[-?\d+\.\d+(,-?\d+\.\d+)*\]$/;
  40. const isIn = data.operator === 'in';
  41. switch (data.type) {
  42. case DataTypeStringEnum.Int8:
  43. case DataTypeStringEnum.Int16:
  44. case DataTypeStringEnum.Int32:
  45. case DataTypeStringEnum.Int64:
  46. // case DataTypeStringEnum:
  47. isLegal = isIn
  48. ? regIntInterval.test(data.value)
  49. : regInt.test(data.value);
  50. break;
  51. case DataTypeStringEnum.Float:
  52. case DataTypeStringEnum.Double:
  53. case DataTypeStringEnum.FloatVector:
  54. isLegal = isIn
  55. ? regFloatInterval.test(data.value)
  56. : regFloat.test(data.value);
  57. break;
  58. case DataTypeStringEnum.Bool:
  59. const legalValues = ['false', 'true'];
  60. isLegal = legalValues.includes(data.value);
  61. break;
  62. case DataTypeStringEnum.VarChar:
  63. isLegal = data.value !== '';
  64. break;
  65. case DataTypeStringEnum.JSON:
  66. let type = DataTypeStringEnum.VarChar;
  67. switch (data.operator) {
  68. case '>':
  69. case '<':
  70. case '>=':
  71. case '<=':
  72. type = DataTypeStringEnum.Int64;
  73. }
  74. isLegal = checkValue({
  75. value: data.value,
  76. type: type,
  77. operator: data.operator,
  78. });
  79. break;
  80. default:
  81. isLegal = false;
  82. break;
  83. }
  84. return isLegal;
  85. };