utils.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { DataTypeStringEnum } from '../../pages/collections/Types';
  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. default:
  22. conditionValue = `"${value}"`;
  23. break;
  24. }
  25. break;
  26. default:
  27. conditionValue = value;
  28. }
  29. return conditionValue;
  30. };
  31. export const checkValue = (data: any): boolean => {
  32. let isLegal = false;
  33. const regInt = /^\d+$/;
  34. const regFloat = /^\d+\.\d+$/;
  35. const regIntInterval = /^\[\d+(,\d+)*\]$/;
  36. const regFloatInterval = /^\[\d+\.\d+(,\d+\.\d+)*\]$/;
  37. const isIn = data.operator === 'in';
  38. switch (data.type) {
  39. case DataTypeStringEnum.Int8:
  40. case DataTypeStringEnum.Int16:
  41. case DataTypeStringEnum.Int32:
  42. case DataTypeStringEnum.Int64:
  43. // case DataTypeStringEnum:
  44. isLegal = isIn
  45. ? regIntInterval.test(data.value)
  46. : regInt.test(data.value);
  47. break;
  48. case DataTypeStringEnum.Float:
  49. case DataTypeStringEnum.Double:
  50. case DataTypeStringEnum.FloatVector:
  51. isLegal = isIn
  52. ? regFloatInterval.test(data.value)
  53. : regFloat.test(data.value);
  54. break;
  55. case DataTypeStringEnum.Bool:
  56. const legalValues = ['false', 'true'];
  57. isLegal = legalValues.includes(data.value);
  58. break;
  59. case DataTypeStringEnum.VarChar:
  60. isLegal = data.value !== '';
  61. break;
  62. case DataTypeStringEnum.JSON:
  63. let type = DataTypeStringEnum.VarChar;
  64. switch (data.operator) {
  65. case '>':
  66. case '<':
  67. case '>=':
  68. case '<=':
  69. type = DataTypeStringEnum.Int64;
  70. }
  71. isLegal = checkValue({
  72. value: data.value,
  73. type: type,
  74. operator: data.operator,
  75. });
  76. break;
  77. default:
  78. isLegal = false;
  79. break;
  80. }
  81. return isLegal;
  82. };