@qrvey/formula-lang 2.0.1-rc.523 → 2.0.1-rc.part-5

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.
Files changed (35) hide show
  1. package/dist/cjs/functions/hour.js +27 -10
  2. package/dist/cjs/functions/hour.js.map +1 -1
  3. package/dist/cjs/functions/index.js +4 -0
  4. package/dist/cjs/functions/index.js.map +1 -1
  5. package/dist/cjs/functions/mid.js +10 -7
  6. package/dist/cjs/functions/mid.js.map +1 -1
  7. package/dist/cjs/functions/millisecond.d.ts +5 -0
  8. package/dist/cjs/functions/millisecond.js +55 -0
  9. package/dist/cjs/functions/millisecond.js.map +1 -0
  10. package/dist/cjs/functions/text.d.ts +5 -0
  11. package/dist/cjs/functions/text.js +42 -0
  12. package/dist/cjs/functions/text.js.map +1 -0
  13. package/dist/cjs/utils/elasticsearch/index.js +3 -0
  14. package/dist/cjs/utils/elasticsearch/index.js.map +1 -1
  15. package/dist/cjs/utils/elasticsearch/scripts.d.ts +7 -2
  16. package/dist/cjs/utils/elasticsearch/scripts.js +35 -22
  17. package/dist/cjs/utils/elasticsearch/scripts.js.map +1 -1
  18. package/dist/module/functions/hour.js +28 -11
  19. package/dist/module/functions/hour.js.map +1 -1
  20. package/dist/module/functions/index.js +4 -0
  21. package/dist/module/functions/index.js.map +1 -1
  22. package/dist/module/functions/mid.js +10 -7
  23. package/dist/module/functions/mid.js.map +1 -1
  24. package/dist/module/functions/millisecond.d.ts +5 -0
  25. package/dist/module/functions/millisecond.js +52 -0
  26. package/dist/module/functions/millisecond.js.map +1 -0
  27. package/dist/module/functions/text.d.ts +5 -0
  28. package/dist/module/functions/text.js +39 -0
  29. package/dist/module/functions/text.js.map +1 -0
  30. package/dist/module/utils/elasticsearch/index.js +4 -1
  31. package/dist/module/utils/elasticsearch/index.js.map +1 -1
  32. package/dist/module/utils/elasticsearch/scripts.d.ts +7 -2
  33. package/dist/module/utils/elasticsearch/scripts.js +33 -21
  34. package/dist/module/utils/elasticsearch/scripts.js.map +1 -1
  35. package/package.json +1 -1
@@ -4,6 +4,7 @@ exports.HOUR = void 0;
4
4
  const scripts_1 = require("../utils/elasticsearch/scripts");
5
5
  const utils_1 = require("../utils");
6
6
  const constants_1 = require("../constants");
7
+ const isAnAllowedValue_1 = require("../utils/isAnAllowedValue");
7
8
  /**
8
9
  * Returns the number of the HOUR in a Date.
9
10
  */
@@ -16,6 +17,12 @@ exports.HOUR = {
16
17
  expectedPrimitive: constants_1.AST_PRIMITIVES.DATE,
17
18
  validator: [utils_1.isDateParam],
18
19
  },
20
+ {
21
+ identifier: 'TIME_FORMAT',
22
+ optional: true,
23
+ expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
24
+ validator: [utils_1.isStringParam, (0, isAnAllowedValue_1.isAnAllowedValue)(['24h', '12h'])],
25
+ },
19
26
  ],
20
27
  transpiler: {
21
28
  elasticsearch,
@@ -25,19 +32,29 @@ exports.HOUR = {
25
32
  },
26
33
  primitiveResult: constants_1.AST_PRIMITIVES.NUMBER,
27
34
  };
28
- function elasticsearch(value) {
29
- return (0, scripts_1.hourScript)(value);
35
+ function elasticsearch(value, timeFormat) {
36
+ return (0, scripts_1.hourScript)(value, (0, utils_1.removeQuotes)(timeFormat !== null && timeFormat !== void 0 ? timeFormat : ''));
30
37
  }
31
- function SQL(value) {
32
- return `DATE_PART('hour', ${value})`;
38
+ function SQL(value, timeFormat) {
39
+ if ((0, utils_1.removeQuotes)(timeFormat !== null && timeFormat !== void 0 ? timeFormat : '') === '12h') {
40
+ return `(CASE
41
+ WHEN DATE_PART(HOUR, ${value})::INTEGER % 12 = 0 THEN
42
+ 12
43
+ ELSE
44
+ DATE_PART(HOUR, ${value})::INTEGER % 12
45
+ END)`;
46
+ }
47
+ else {
48
+ return `DATE_PART('hour', ${value})`;
49
+ }
33
50
  }
34
- function snowflake(value) {
35
- return SQL(value);
51
+ function snowflake(value, timeFormat) {
52
+ return SQL(value, timeFormat);
36
53
  }
37
- function redshift(value) {
38
- return SQL(value);
54
+ function redshift(value, timeFormat) {
55
+ return SQL(value, timeFormat);
39
56
  }
40
- function postgresql(value) {
41
- return SQL(value);
57
+ function postgresql(value, timeFormat) {
58
+ return SQL(value, timeFormat);
42
59
  }
43
60
  //# sourceMappingURL=hour.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hour.js","sourceRoot":"","sources":["../../../src/functions/hour.ts"],"names":[],"mappings":";;;AACA,4DAA4D;AAC5D,oCAAuC;AACvC,4CAA8C;AAE9C;;GAEG;AACU,QAAA,IAAI,GAAuB;IACpC,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,IAAI;YACtC,SAAS,EAAE,CAAC,mBAAW,CAAC;SAC3B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACtB,OAAO,qBAAqB,KAAK,GAAG,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"hour.js","sourceRoot":"","sources":["../../../src/functions/hour.ts"],"names":[],"mappings":";;;AACA,4DAA4D;AAC5D,oCAAoE;AACpE,4CAA8C;AAC9C,gEAA6D;AAE7D;;GAEG;AACU,QAAA,IAAI,GAAuB;IACpC,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,IAAI;YACtC,SAAS,EAAE,CAAC,mBAAW,CAAC;SAC3B;QACD;YACI,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,EAAE,IAAA,mCAAgB,EAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAC/D;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa,EAAE,UAAmB;IACrD,OAAO,IAAA,oBAAU,EAAC,KAAK,EAAE,IAAA,oBAAY,EAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,UAAmB;IAC3C,IAAI,IAAA,oBAAY,EAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC,KAAK,KAAK,EAAE;QAC1C,OAAO;mCACoB,KAAK;;;kCAGN,KAAK;eACxB,CAAC;KACX;SAAM;QACH,OAAO,qBAAqB,KAAK,GAAG,CAAC;KACxC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,UAAmB;IACjD,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,UAAmB;IAChD,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,UAAmB;IAClD,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC"}
@@ -40,6 +40,8 @@ const random_1 = require("./random");
40
40
  const round_1 = require("./round");
41
41
  const rounddown_1 = require("./rounddown");
42
42
  const roundup_1 = require("./roundup");
43
+ const millisecond_1 = require("./millisecond");
44
+ const text_1 = require("./text");
43
45
  exports.functionList = {
44
46
  MID: mid_1.MID,
45
47
  ABS: abs_1.ABS,
@@ -80,6 +82,8 @@ exports.functionList = {
80
82
  ROUND: round_1.ROUND,
81
83
  ROUNDDOWN: rounddown_1.ROUNDDOWN,
82
84
  ROUNDUP: roundup_1.ROUNDUP,
85
+ MILLISECOND: millisecond_1.MILLISECOND,
86
+ TEXT: text_1.TEXT,
83
87
  };
84
88
  exports.FUNCTION_LIST = Object.keys(exports.functionList);
85
89
  function getFunctionDetail(functionName) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAC5B,+BAA4B;AAC5B,uCAAoC;AACpC,+BAA4B;AAC5B,mCAAgC;AAChC,iCAA8B;AAC9B,iCAA8B;AAC9B,qCAAkC;AAClC,qCAAkC;AAClC,6BAA0B;AAC1B,+BAA4B;AAC5B,qCAAkC;AAClC,+BAA4B;AAC5B,6BAA0B;AAC1B,+CAA4C;AAC5C,mCAAgC;AAChC,mCAAgC;AAChC,iCAA8B;AAC9B,iCAA8B;AAC9B,mCAAgC;AAChC,uCAAoC;AACpC,2CAAwC;AACxC,qCAAkC;AAClC,iDAA8C;AAC9C,+BAA4B;AAC5B,+BAA4B;AAC5B,qCAAkC;AAClC,iCAA8B;AAC9B,+BAA4B;AAC5B,uCAAoC;AACpC,uCAAoC;AACpC,iCAA8B;AAC9B,+BAA4B;AAC5B,+BAA4B;AAC5B,mCAAgC;AAChC,qCAAkC;AAClC,mCAAgC;AAChC,2CAAwC;AACxC,uCAAoC;AAEvB,QAAA,YAAY,GAAiB;IACtC,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,OAAO,EAAP,iBAAO;IACP,GAAG,EAAH,SAAG;IACH,KAAK,EAAL,aAAK;IACL,IAAI,EAAJ,WAAI;IACJ,IAAI,EAAJ,WAAI;IACJ,MAAM,EAAN,eAAM;IACN,MAAM,EAAN,eAAM;IACN,EAAE,EAAF,OAAE;IACF,GAAG,EAAH,SAAG;IACH,MAAM,EAAN,eAAM;IACN,GAAG,EAAH,SAAG;IACH,EAAE,EAAF,OAAE;IACF,WAAW,EAAX,yBAAW;IACX,KAAK,EAAL,aAAK;IACL,KAAK,EAAL,aAAK;IACL,IAAI,EAAJ,WAAI;IACJ,IAAI,EAAJ,WAAI;IACJ,KAAK,EAAL,aAAK;IACL,OAAO,EAAP,iBAAO;IACP,SAAS,EAAT,qBAAS;IACT,MAAM,EAAN,eAAM;IACN,YAAY,EAAZ,2BAAY;IACZ,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,MAAM,EAAN,eAAM;IACN,IAAI,EAAJ,WAAI;IACJ,GAAG,EAAH,SAAG;IACH,OAAO,EAAP,iBAAO;IACP,OAAO,EAAP,iBAAO;IACP,IAAI,EAAJ,WAAI;IACJ,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,KAAK,EAAL,aAAK;IACL,MAAM,EAAN,eAAM;IACN,KAAK,EAAL,aAAK;IACL,SAAS,EAAT,qBAAS;IACT,OAAO,EAAP,iBAAO;CACV,CAAC;AAEW,QAAA,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC;AAEvD,SAAgB,iBAAiB,CAC7B,YAAoB;IAEpB,OAAO,oBAAY,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAJD,8CAIC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAC5B,+BAA4B;AAC5B,uCAAoC;AACpC,+BAA4B;AAC5B,mCAAgC;AAChC,iCAA8B;AAC9B,iCAA8B;AAC9B,qCAAkC;AAClC,qCAAkC;AAClC,6BAA0B;AAC1B,+BAA4B;AAC5B,qCAAkC;AAClC,+BAA4B;AAC5B,6BAA0B;AAC1B,+CAA4C;AAC5C,mCAAgC;AAChC,mCAAgC;AAChC,iCAA8B;AAC9B,iCAA8B;AAC9B,mCAAgC;AAChC,uCAAoC;AACpC,2CAAwC;AACxC,qCAAkC;AAClC,iDAA8C;AAC9C,+BAA4B;AAC5B,+BAA4B;AAC5B,qCAAkC;AAClC,iCAA8B;AAC9B,+BAA4B;AAC5B,uCAAoC;AACpC,uCAAoC;AACpC,iCAA8B;AAC9B,+BAA4B;AAC5B,+BAA4B;AAC5B,mCAAgC;AAChC,qCAAkC;AAClC,mCAAgC;AAChC,2CAAwC;AACxC,uCAAoC;AACpC,+CAA4C;AAC5C,iCAA8B;AAEjB,QAAA,YAAY,GAAiB;IACtC,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,OAAO,EAAP,iBAAO;IACP,GAAG,EAAH,SAAG;IACH,KAAK,EAAL,aAAK;IACL,IAAI,EAAJ,WAAI;IACJ,IAAI,EAAJ,WAAI;IACJ,MAAM,EAAN,eAAM;IACN,MAAM,EAAN,eAAM;IACN,EAAE,EAAF,OAAE;IACF,GAAG,EAAH,SAAG;IACH,MAAM,EAAN,eAAM;IACN,GAAG,EAAH,SAAG;IACH,EAAE,EAAF,OAAE;IACF,WAAW,EAAX,yBAAW;IACX,KAAK,EAAL,aAAK;IACL,KAAK,EAAL,aAAK;IACL,IAAI,EAAJ,WAAI;IACJ,IAAI,EAAJ,WAAI;IACJ,KAAK,EAAL,aAAK;IACL,OAAO,EAAP,iBAAO;IACP,SAAS,EAAT,qBAAS;IACT,MAAM,EAAN,eAAM;IACN,YAAY,EAAZ,2BAAY;IACZ,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,MAAM,EAAN,eAAM;IACN,IAAI,EAAJ,WAAI;IACJ,GAAG,EAAH,SAAG;IACH,OAAO,EAAP,iBAAO;IACP,OAAO,EAAP,iBAAO;IACP,IAAI,EAAJ,WAAI;IACJ,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,KAAK,EAAL,aAAK;IACL,MAAM,EAAN,eAAM;IACN,KAAK,EAAL,aAAK;IACL,SAAS,EAAT,qBAAS;IACT,OAAO,EAAP,iBAAO;IACP,WAAW,EAAX,yBAAW;IACX,IAAI,EAAJ,WAAI;CACP,CAAC;AAEW,QAAA,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC;AAEvD,SAAgB,iBAAiB,CAC7B,YAAoB;IAEpB,OAAO,oBAAY,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAJD,8CAIC"}
@@ -45,22 +45,25 @@ exports.MID = {
45
45
  function elasticsearch(current, start, length) {
46
46
  return `${constants_1.ELASTICSEARCH_SCRIPT_NAMES.subString}(${current}, ${start}, ${length})`;
47
47
  }
48
+ function sqlRound(value) {
49
+ return `(FLOOR(ABS(${value})) * (CASE WHEN ${value} < 0 THEN -1 ELSE 1 END))`;
50
+ }
48
51
  function snowflake(current, start, length) {
49
- return `SUBSTRING(${current}, FLOOR(${start})::INTEGER, FLOOR(${length})::INTEGER)`;
52
+ return `SUBSTRING(${current}, ${sqlRound(start)} , ${sqlRound(length)})`;
50
53
  }
51
54
  function SQL(current, start, length) {
52
55
  return `
53
56
  (case
54
57
  when ${current} IS NULL OR ${start} IS NULL OR ${length} IS NULL then NULL
55
- when (FLOOR(${length})::INTEGER < 0) OR (FLOOR(${start})::INTEGER * -1) > LENGTH(${current}) then ''
58
+ when (${sqlRound(length)} < 0) OR (${sqlRound(start)} * -1) > LENGTH(${current}) then ''
56
59
  else
57
60
  SUBSTRING(${current},
58
61
  (case
59
- when FLOOR(${start})::INTEGER < 0 then (LENGTH(${current}) + FLOOR(${start})::INTEGER + 1)
60
- when FLOOR(${start})::INTEGER = 0 then 1
61
- else FLOOR(${start})::INTEGER
62
- end),
63
- FLOOR(${length})::INTEGER)
62
+ when ${sqlRound(start)} < 0 then (LENGTH(${current}) + ${sqlRound(start)} + 1)
63
+ when ${sqlRound(start)} = 0 then 1
64
+ else ${sqlRound(start)}
65
+ end)::INTEGER,
66
+ ${sqlRound(length)}::INTEGER)
64
67
  end
65
68
  )`.trim();
66
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mid.js","sourceRoot":"","sources":["../../../src/functions/mid.ts"],"names":[],"mappings":";;;AAAA,4CAA0E;AAE1E,oCAAwD;AACxD,0FAAuF;AACvF,kDAA+C;AAE/C;;GAEG;AACU,QAAA,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,EAAE,qBAAS,CAAC;SACxC;QACD;YACI,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE;gBACP,qBAAa;gBACb,IAAA,6DAA6B,EAAC,CAAC,CAAC;gBAChC,qBAAS;aACZ;SACJ;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACjE,OAAO,GAAG,sCAA0B,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC;AACtF,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC7D,OAAO,aAAa,OAAO,WAAW,KAAK,qBAAqB,MAAM,aAAa,CAAC;AACxF,CAAC;AAED,SAAS,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACvD,OAAO;;eAEI,OAAO,eAAe,KAAK,eAAe,MAAM;gBAC/C,MAAM,6BAA6B,KAAK,6BAA6B,OAAO;;oBAExE,OAAO;;6BAEE,KAAK,+BAA+B,OAAO,aAAa,KAAK;6BAC7D,KAAK;6BACL,KAAK;;oBAEd,MAAM;;MAEpB,CAAC,IAAI,EAAE,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC5D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"mid.js","sourceRoot":"","sources":["../../../src/functions/mid.ts"],"names":[],"mappings":";;;AAAA,4CAA0E;AAE1E,oCAAwD;AACxD,0FAAuF;AACvF,kDAA+C;AAE/C;;GAEG;AACU,QAAA,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,EAAE,qBAAS,CAAC;SACxC;QACD;YACI,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE;gBACP,qBAAa;gBACb,IAAA,6DAA6B,EAAC,CAAC,CAAC;gBAChC,qBAAS;aACZ;SACJ;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACjE,OAAO,GAAG,sCAA0B,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC;AACtF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,cAAc,KAAK,mBAAmB,KAAK,2BAA2B,CAAC;AAClF,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC7D,OAAO,aAAa,OAAO,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7E,CAAC;AAED,SAAS,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACvD,OAAO;;eAEI,OAAO,eAAe,KAAK,eAAe,MAAM;UACrD,QAAQ,CAAC,MAAM,CAAC,aAAa,QAAQ,CACvC,KAAK,CACR,mBAAmB,OAAO;;oBAEX,OAAO;;uBAEJ,QAAQ,CACX,KAAK,CACR,qBAAqB,OAAO,OAAO,QAAQ,CAAC,KAAK,CAAC;uBAC5C,QAAQ,CAAC,KAAK,CAAC;uBACf,QAAQ,CAAC,KAAK,CAAC;;cAExB,QAAQ,CAAC,MAAM,CAAC;;MAExB,CAAC,IAAI,EAAE,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC5D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FunctionDefinition } from '../constants/interfaces';
2
+ /**
3
+ * Returns the millisecond of a datetime value. The millisecond is given as an integer ranging from 0 to 999
4
+ */
5
+ export declare const MILLISECOND: FunctionDefinition;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MILLISECOND = void 0;
4
+ const scripts_1 = require("../utils/elasticsearch/scripts");
5
+ const utils_1 = require("../utils");
6
+ const constants_1 = require("../constants");
7
+ /**
8
+ * Returns the millisecond of a datetime value. The millisecond is given as an integer ranging from 0 to 999
9
+ */
10
+ exports.MILLISECOND = {
11
+ identifier: 'MILLISECOND',
12
+ parameters: [
13
+ {
14
+ identifier: 'DATE',
15
+ optional: false,
16
+ expectedPrimitive: constants_1.AST_PRIMITIVES.DATE,
17
+ validator: [utils_1.isDateParam],
18
+ },
19
+ ],
20
+ transpiler: {
21
+ elasticsearch,
22
+ snowflake,
23
+ redshift,
24
+ postgresql,
25
+ },
26
+ primitiveResult: constants_1.AST_PRIMITIVES.NUMBER,
27
+ };
28
+ function elasticsearch(value) {
29
+ return (0, scripts_1.millisecondScript)(value);
30
+ }
31
+ function snowflake(value) {
32
+ /**
33
+ * Extracts the nanosecond value from a given date and divides it by 1,000,000.
34
+ */
35
+ return `(EXTRACT(nanosecond FROM ${value}) / 1000000)`;
36
+ }
37
+ function redshift(value) {
38
+ /*
39
+ Operation that calculates the milliseconds of a given date value.
40
+ Milliseconds - (seconds * 1000)
41
+ ex.
42
+ 2500 - (2 * 1000) = 500
43
+ */
44
+ return `(DATE_PART(milliseconds, ${value}) - (FLOOR(DATE_PART(seconds, ${value})) * 1000))`;
45
+ }
46
+ function postgresql(value) {
47
+ /*
48
+ Operation that calculates the milliseconds of a given date value.
49
+ Milliseconds - (seconds * 1000)
50
+ ex.
51
+ 2500 - (2 * 1000) = 500
52
+ */
53
+ return `(EXTRACT(milliseconds FROM ${value}) - (FLOOR(EXTRACT(seconds FROM ${value})) * 1000))`;
54
+ }
55
+ //# sourceMappingURL=millisecond.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"millisecond.js","sourceRoot":"","sources":["../../../src/functions/millisecond.ts"],"names":[],"mappings":";;;AACA,4DAAmE;AACnE,oCAAuC;AACvC,4CAA8C;AAE9C;;GAEG;AACU,QAAA,WAAW,GAAuB;IAC3C,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,IAAI;YACtC,SAAS,EAAE,CAAC,mBAAW,CAAC;SAC3B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,IAAA,2BAAiB,EAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B;;OAEG;IACH,OAAO,4BAA4B,KAAK,cAAc,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B;;;;;MAKE;IACF,OAAO,4BAA4B,KAAK,iCAAiC,KAAK,aAAa,CAAC;AAChG,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B;;;;;MAKE;IACF,OAAO,8BAA8B,KAAK,mCAAmC,KAAK,aAAa,CAAC;AACpG,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FunctionDefinition } from '../constants/interfaces';
2
+ /**
3
+ * `TEXT` Transforms a number into a string.
4
+ */
5
+ export declare const TEXT: FunctionDefinition;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEXT = void 0;
4
+ const constants_1 = require("../constants");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * `TEXT` Transforms a number into a string.
8
+ */
9
+ exports.TEXT = {
10
+ identifier: 'TEXT',
11
+ parameters: [
12
+ {
13
+ identifier: 'VALUE',
14
+ optional: false,
15
+ expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
16
+ validator: [utils_1.isNumberParam],
17
+ },
18
+ ],
19
+ transpiler: {
20
+ elasticsearch,
21
+ snowflake,
22
+ redshift,
23
+ postgresql,
24
+ },
25
+ primitiveResult: constants_1.AST_PRIMITIVES.NUMBER,
26
+ };
27
+ function elasticsearch(value) {
28
+ return `TEXT(${value})`;
29
+ }
30
+ function SQL(value) {
31
+ return `${value}::VARCHAR`;
32
+ }
33
+ function snowflake(value) {
34
+ return SQL(value);
35
+ }
36
+ function redshift(value) {
37
+ return SQL(value);
38
+ }
39
+ function postgresql(value) {
40
+ return SQL(value);
41
+ }
42
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/functions/text.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAE9C,oCAAyC;AAEzC;;GAEG;AACU,QAAA,IAAI,GAAuB;IACpC,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,OAAO;YACnB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,QAAQ,KAAK,GAAG,CAAC;AAC5B,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACtB,OAAO,GAAG,KAAK,WAAW,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
@@ -13,6 +13,7 @@ function customFunctionsList(func) {
13
13
  case 'HOUR':
14
14
  case 'MINUTE':
15
15
  case 'SECOND':
16
+ case 'MILLISECOND':
16
17
  return scripts_1.dateFormatScript;
17
18
  case 'MID':
18
19
  case 'LEFT':
@@ -51,6 +52,8 @@ function customFunctionsList(func) {
51
52
  return scripts_1.roundDownScript;
52
53
  case 'ROUNDUP':
53
54
  return scripts_1.roundUpScript;
55
+ case 'TEXT':
56
+ return scripts_1.textScript;
54
57
  default:
55
58
  return false;
56
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/index.ts"],"names":[],"mappings":";;;AAAA,uCAmBmB;AACnB,qCAA4D;AAAnD,iGAAA,MAAM,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAExC,SAAgB,mBAAmB,CAAC,IAAY;IAC5C,QAAQ,IAAI,EAAE;QACV,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACT,OAAO,0BAAgB,CAAC;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACR,OAAO,yBAAe,CAAC;QAC3B,KAAK,QAAQ;YACT,OAAO,sBAAY,CAAC;QACxB,KAAK,QAAQ;YACT,OAAO,sBAAY,CAAC;QACxB,KAAK,KAAK;YACN,OAAO,wBAAc,CAAC;QAC1B,KAAK,KAAK;YACN,OAAO,qBAAW,CAAC;QACvB,KAAK,QAAQ;YACT,OAAO,sBAAY,CAAC;QACxB,KAAK,MAAM;YACP,OAAO,oBAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,mBAAS,CAAC;QACrB,KAAK,SAAS;YACV,OAAO,uBAAa,CAAC;QACzB,KAAK,SAAS;YACV,OAAO,uBAAa,CAAC;QACzB,KAAK,MAAM;YACP,OAAO,oBAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,mBAAS,CAAC;QACrB,KAAK,KAAK;YACN,OAAO,mBAAS,CAAC;QACrB,KAAK,OAAO;YACR,OAAO,qBAAW,CAAC;QACvB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACR,OAAO,qBAAW,CAAC;QACvB,KAAK,WAAW;YACZ,OAAO,yBAAe,CAAC;QAC3B,KAAK,SAAS;YACV,OAAO,uBAAa,CAAC;QACzB;YACI,OAAO,KAAK,CAAC;KACpB;AACL,CAAC;AAjDD,kDAiDC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/index.ts"],"names":[],"mappings":";;;AAAA,uCAoBmB;AACnB,qCAA4D;AAAnD,iGAAA,MAAM,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAExC,SAAgB,mBAAmB,CAAC,IAAY;IAC5C,QAAQ,IAAI,EAAE;QACV,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,aAAa;YACd,OAAO,0BAAgB,CAAC;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACR,OAAO,yBAAe,CAAC;QAC3B,KAAK,QAAQ;YACT,OAAO,sBAAY,CAAC;QACxB,KAAK,QAAQ;YACT,OAAO,sBAAY,CAAC;QACxB,KAAK,KAAK;YACN,OAAO,wBAAc,CAAC;QAC1B,KAAK,KAAK;YACN,OAAO,qBAAW,CAAC;QACvB,KAAK,QAAQ;YACT,OAAO,sBAAY,CAAC;QACxB,KAAK,MAAM;YACP,OAAO,oBAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,mBAAS,CAAC;QACrB,KAAK,SAAS;YACV,OAAO,uBAAa,CAAC;QACzB,KAAK,SAAS;YACV,OAAO,uBAAa,CAAC;QACzB,KAAK,MAAM;YACP,OAAO,oBAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,mBAAS,CAAC;QACrB,KAAK,KAAK;YACN,OAAO,mBAAS,CAAC;QACrB,KAAK,OAAO;YACR,OAAO,qBAAW,CAAC;QACvB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACR,OAAO,qBAAW,CAAC;QACvB,KAAK,WAAW;YACZ,OAAO,yBAAe,CAAC;QAC3B,KAAK,SAAS;YACV,OAAO,uBAAa,CAAC;QACzB,KAAK,MAAM;YACP,OAAO,oBAAU,CAAC;QACtB;YACI,OAAO,KAAK,CAAC;KACpB;AACL,CAAC;AApDD,kDAoDC"}
@@ -2,13 +2,16 @@ import { DateDifUnitParam } from '../../constants/interfaces';
2
2
  export declare function toDate(value: string): string;
3
3
  export declare const setTimezoneToColumnDate: string;
4
4
  export declare const dateFormatScript: string;
5
- export declare const subStringScript: string;
6
5
  export declare const dayScript: (value: any) => string;
7
6
  export declare const monthScript: (value: any) => string;
8
7
  export declare const yearScript: (value: any) => string;
9
- export declare const hourScript: (value: any) => string;
8
+ export declare const hourScript: (value: any, timeFormat?: string) => string;
10
9
  export declare const minuteScript: (value: any) => string;
11
10
  export declare const secondScript: (value: any) => string;
11
+ /**
12
+ * Extracts the nanosecond value from a given date and divides it by 1,000,000.
13
+ */
14
+ export declare const millisecondScript: (value: any) => string;
12
15
  export declare function dateDif(start: any, end: any, unit: DateDifUnitParam): string;
13
16
  export declare const getValueScript = "def GET_VALUE(def c){return (c.empty ? null : c.value)}";
14
17
  export declare const isNullScript = "def IS_NULL_SCRIPT(def value, def replacement) { return value ?: replacement; }";
@@ -27,3 +30,5 @@ export declare const powerScript = "def POWER(def value, def numberToRaise) {\n
27
30
  export declare const roundDownScript = "def ROUNDDOWN(def value, def places) {\n if (value == null || places == null) return null; \n if (places > 10) places = 10;\n if (places < 0) places = 0;\n def _value = Math.abs(value);\n def sign = value < 0 ? -1 : 1;\n def scale = Math.pow(10, places);\n return (Math.floor(_value * scale) / scale) * sign;\n}";
28
31
  export declare const roundScript: string;
29
32
  export declare const roundUpScript: string;
33
+ export declare const subStringScript: string;
34
+ export declare const textScript = "def TEXT(def v) { return v == null ? null : v.toString(); }";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.roundUpScript = exports.roundScript = exports.roundDownScript = exports.powerScript = exports.oddScript = exports.logScript = exports.evenScript = exports.includeScript = exports.replaceScript = exports.expScript = exports.sqrtScript = exports.lengthScript = exports.leastScript = exports.greatestScript = exports.properScript = exports.isNullScript = exports.getValueScript = exports.dateDif = exports.secondScript = exports.minuteScript = exports.hourScript = exports.yearScript = exports.monthScript = exports.dayScript = exports.subStringScript = exports.dateFormatScript = exports.setTimezoneToColumnDate = exports.toDate = void 0;
3
+ exports.textScript = exports.subStringScript = exports.roundUpScript = exports.roundScript = exports.roundDownScript = exports.powerScript = exports.oddScript = exports.logScript = exports.evenScript = exports.includeScript = exports.replaceScript = exports.expScript = exports.sqrtScript = exports.lengthScript = exports.leastScript = exports.greatestScript = exports.properScript = exports.isNullScript = exports.getValueScript = exports.dateDif = exports.millisecondScript = exports.secondScript = exports.minuteScript = exports.hourScript = exports.yearScript = exports.monthScript = exports.dayScript = exports.dateFormatScript = exports.setTimezoneToColumnDate = exports.toDate = void 0;
4
4
  const constants_1 = require("../../constants");
5
5
  function toDate(value) {
6
6
  return `ZonedDateTime.parse("${value}")`;
@@ -29,26 +29,6 @@ String ${constants_1.ELASTICSEARCH_SCRIPT_NAMES.dateFormat}(def date_value, Stri
29
29
  return DateTimeFormatter.ofPattern(format).format(date_value)
30
30
  }
31
31
  `;
32
- exports.subStringScript = `
33
- String ${constants_1.ELASTICSEARCH_SCRIPT_NAMES.subString}(def text, def start, def end) {
34
- if (text == null || start == null || end == null) return null;
35
- text = (String) text;
36
- start = (int) Math.floor(start);
37
- end = (int) Math.floor(end);
38
- int first = 0;
39
- if (end < 0 || (start * -1 > text.length())) return "";
40
- if (start < 0) {
41
- first = (int) Math.max(text.length() + start, 0);
42
- } else if (start == 0) {
43
- first = 0;
44
- } else {
45
- first = (int) Math.min(start - 1, text.length())
46
- }
47
-
48
- int last = (int) Math.min(first + end, text.length());
49
- return text.substring(first, last);
50
- }
51
- `;
52
32
  function dateFormatToInt(value, format) {
53
33
  return `Integer.parseInt(${constants_1.ELASTICSEARCH_SCRIPT_NAMES.dateFormat}(${value}, '${format}'))`;
54
34
  }
@@ -58,12 +38,24 @@ const monthScript = (value) => dateFormatToInt(value, 'MM');
58
38
  exports.monthScript = monthScript;
59
39
  const yearScript = (value) => dateFormatToInt(value, 'yyyy');
60
40
  exports.yearScript = yearScript;
61
- const hourScript = (value) => dateFormatToInt(value, 'HH');
41
+ const hourScript = (value, timeFormat) => {
42
+ if (timeFormat === '12h') {
43
+ return dateFormatToInt(value, 'hh');
44
+ }
45
+ else {
46
+ return dateFormatToInt(value, 'HH');
47
+ }
48
+ };
62
49
  exports.hourScript = hourScript;
63
50
  const minuteScript = (value) => dateFormatToInt(value, 'mm');
64
51
  exports.minuteScript = minuteScript;
65
52
  const secondScript = (value) => dateFormatToInt(value, 'ss');
66
53
  exports.secondScript = secondScript;
54
+ /**
55
+ * Extracts the nanosecond value from a given date and divides it by 1,000,000.
56
+ */
57
+ const millisecondScript = (value) => `(${dateFormatToInt(value, 'n')} / 1000000.0)`;
58
+ exports.millisecondScript = millisecondScript;
67
59
  function dateDif(start, end, unit) {
68
60
  const units = {
69
61
  Y: 'YEARS',
@@ -205,4 +197,25 @@ def ROUNDUP(def value, def places) {
205
197
  def scale = Math.pow(10, places);
206
198
  return (Math.ceil(_value * scale) / scale) * sign;
207
199
  }`;
200
+ exports.subStringScript = `${exports.roundDownScript}
201
+ String ${constants_1.ELASTICSEARCH_SCRIPT_NAMES.subString}(def text, def start, def end) {
202
+ if (text == null || start == null || end == null) return null;
203
+ text = (String) text;
204
+ start = ROUNDDOWN(start, 0);
205
+ end = ROUNDDOWN(end, 0);
206
+ int first = 0;
207
+ if (end < 0 || (start * -1 > text.length())) return "";
208
+ if (start < 0) {
209
+ first = (int) Math.max(text.length() + start, 0);
210
+ } else if (start == 0) {
211
+ first = 0;
212
+ } else {
213
+ first = (int) Math.min(start - 1, text.length())
214
+ }
215
+
216
+ int last = (int) Math.min(first + end, text.length());
217
+ return text.substring(first, last);
218
+ }
219
+ `;
220
+ exports.textScript = `def TEXT(def v) { return v == null ? null : v.toString(); }`;
208
221
  //# sourceMappingURL=scripts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/scripts.ts"],"names":[],"mappings":";;;AACA,+CAA6E;AAE7E,SAAgB,MAAM,CAAC,KAAa;IAChC,OAAO,wBAAwB,KAAK,IAAI,CAAC;AAC7C,CAAC;AAFD,wBAEC;AAEY,QAAA,uBAAuB,GAAG;MACjC,sCAAY,CAAC,WAAW;;;;;;;;;;;CAW7B,CAAC;AAEW,QAAA,gBAAgB,GAAG;SACvB,sCAAY,CAAC,UAAU;;;;;;;;CAQ/B,CAAC;AAEW,QAAA,eAAe,GAAG;SACtB,sCAAY,CAAC,SAAS;;;;;;;;;;;;;;;;;;CAkB9B,CAAC;AAEF,SAAS,eAAe,CAAC,KAAU,EAAE,MAAc;IAC/C,OAAO,oBAAoB,sCAAY,CAAC,UAAU,IAAI,KAAK,MAAM,MAAM,KAAK,CAAC;AACjF,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAAzD,QAAA,SAAS,aAAgD;AAE/D,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAA3D,QAAA,WAAW,eAAgD;AAEjE,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAA5D,QAAA,UAAU,cAAkD;AAElE,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAA1D,QAAA,UAAU,cAAgD;AAEhE,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAA5D,QAAA,YAAY,gBAAgD;AAElE,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAA5D,QAAA,YAAY,gBAAgD;AAEzE,SAAgB,OAAO,CAAC,KAAU,EAAE,GAAQ,EAAE,IAAsB;IAChE,MAAM,KAAK,GAAG;QACV,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,MAAM;KACZ,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,cAAc,WAAW,YAAY,KAAK,KAAK,GAAG,GAAG,CAAC;AACjE,CAAC;AARD,0BAQC;AAEY,QAAA,cAAc,GAAG,yDAAyD,CAAC;AAE3E,QAAA,YAAY,GAAG,iFAAiF,CAAC;AAEjG,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;IAkBxB,CAAC;AAEQ,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EAwB5B,CAAC;AAEU,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EAwBzB,CAAC;AAEU,QAAA,YAAY,GAAG,4DAA4D,CAAC;AAE5E,QAAA,UAAU,GAAG,2EAA2E,CAAC;AAEzF,QAAA,SAAS,GAAG,6DAA6D,CAAC;AAE1E,QAAA,aAAa,GAAG;;;;EAI3B,CAAC;AAEU,QAAA,aAAa,GAAG,oIAAoI,CAAC;AAErJ,QAAA,UAAU,GAAG;;;;;EAKxB,CAAC;AAEU,QAAA,SAAS,GAAG;;;;EAIvB,CAAC;AAEU,QAAA,SAAS,GAAG;;;;;EAKvB,CAAC;AAEU,QAAA,WAAW,GAAG;;;;EAIzB,CAAC;AAEU,QAAA,eAAe,GAAG;;;;;;;;EAQ7B,CAAC;AAEU,QAAA,WAAW,GAAG,GAAG,uBAAe;;;;;;;;;EAS3C,CAAC;AAEU,QAAA,aAAa,GAAG,GAAG,uBAAe;;;;;;;;;EAS7C,CAAC"}
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/scripts.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { hourScript } from '../utils/elasticsearch/scripts';
2
- import { isDateParam } from '../utils';
2
+ import { isDateParam, isStringParam, removeQuotes } from '../utils';
3
3
  import { AST_PRIMITIVES } from '../constants';
4
+ import { isAnAllowedValue } from '../utils/isAnAllowedValue';
4
5
  /**
5
6
  * Returns the number of the HOUR in a Date.
6
7
  */
@@ -13,6 +14,12 @@ export const HOUR = {
13
14
  expectedPrimitive: AST_PRIMITIVES.DATE,
14
15
  validator: [isDateParam],
15
16
  },
17
+ {
18
+ identifier: 'TIME_FORMAT',
19
+ optional: true,
20
+ expectedPrimitive: AST_PRIMITIVES.STRING,
21
+ validator: [isStringParam, isAnAllowedValue(['24h', '12h'])],
22
+ },
16
23
  ],
17
24
  transpiler: {
18
25
  elasticsearch,
@@ -22,19 +29,29 @@ export const HOUR = {
22
29
  },
23
30
  primitiveResult: AST_PRIMITIVES.NUMBER,
24
31
  };
25
- function elasticsearch(value) {
26
- return hourScript(value);
32
+ function elasticsearch(value, timeFormat) {
33
+ return hourScript(value, removeQuotes(timeFormat !== null && timeFormat !== void 0 ? timeFormat : ''));
27
34
  }
28
- function SQL(value) {
29
- return `DATE_PART('hour', ${value})`;
35
+ function SQL(value, timeFormat) {
36
+ if (removeQuotes(timeFormat !== null && timeFormat !== void 0 ? timeFormat : '') === '12h') {
37
+ return `(CASE
38
+ WHEN DATE_PART(HOUR, ${value})::INTEGER % 12 = 0 THEN
39
+ 12
40
+ ELSE
41
+ DATE_PART(HOUR, ${value})::INTEGER % 12
42
+ END)`;
43
+ }
44
+ else {
45
+ return `DATE_PART('hour', ${value})`;
46
+ }
30
47
  }
31
- function snowflake(value) {
32
- return SQL(value);
48
+ function snowflake(value, timeFormat) {
49
+ return SQL(value, timeFormat);
33
50
  }
34
- function redshift(value) {
35
- return SQL(value);
51
+ function redshift(value, timeFormat) {
52
+ return SQL(value, timeFormat);
36
53
  }
37
- function postgresql(value) {
38
- return SQL(value);
54
+ function postgresql(value, timeFormat) {
55
+ return SQL(value, timeFormat);
39
56
  }
40
57
  //# sourceMappingURL=hour.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hour.js","sourceRoot":"","sources":["../../../src/functions/hour.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAuB;IACpC,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,IAAI;YACtC,SAAS,EAAE,CAAC,WAAW,CAAC;SAC3B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACtB,OAAO,qBAAqB,KAAK,GAAG,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"hour.js","sourceRoot":"","sources":["../../../src/functions/hour.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAuB;IACpC,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,IAAI;YACtC,SAAS,EAAE,CAAC,WAAW,CAAC;SAC3B;QACD;YACI,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAC/D;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa,EAAE,UAAmB;IACrD,OAAO,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,UAAmB;IAC3C,IAAI,YAAY,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC,KAAK,KAAK,EAAE;QAC1C,OAAO;mCACoB,KAAK;;;kCAGN,KAAK;eACxB,CAAC;KACX;SAAM;QACH,OAAO,qBAAqB,KAAK,GAAG,CAAC;KACxC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,UAAmB;IACjD,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,UAAmB;IAChD,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,UAAmB;IAClD,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC"}
@@ -37,6 +37,8 @@ import { RANDOM } from './random';
37
37
  import { ROUND } from './round';
38
38
  import { ROUNDDOWN } from './rounddown';
39
39
  import { ROUNDUP } from './roundup';
40
+ import { MILLISECOND } from './millisecond';
41
+ import { TEXT } from './text';
40
42
  export const functionList = {
41
43
  MID,
42
44
  ABS,
@@ -77,6 +79,8 @@ export const functionList = {
77
79
  ROUND,
78
80
  ROUNDDOWN,
79
81
  ROUNDUP,
82
+ MILLISECOND,
83
+ TEXT,
80
84
  };
81
85
  export const FUNCTION_LIST = Object.keys(functionList);
82
86
  export function getFunctionDetail(functionName) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"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"}
@@ -42,22 +42,25 @@ export const MID = {
42
42
  function elasticsearch(current, start, length) {
43
43
  return `${ELASTICSEARCH_SCRIPT_NAMES.subString}(${current}, ${start}, ${length})`;
44
44
  }
45
+ function sqlRound(value) {
46
+ return `(FLOOR(ABS(${value})) * (CASE WHEN ${value} < 0 THEN -1 ELSE 1 END))`;
47
+ }
45
48
  function snowflake(current, start, length) {
46
- return `SUBSTRING(${current}, FLOOR(${start})::INTEGER, FLOOR(${length})::INTEGER)`;
49
+ return `SUBSTRING(${current}, ${sqlRound(start)} , ${sqlRound(length)})`;
47
50
  }
48
51
  function SQL(current, start, length) {
49
52
  return `
50
53
  (case
51
54
  when ${current} IS NULL OR ${start} IS NULL OR ${length} IS NULL then NULL
52
- when (FLOOR(${length})::INTEGER < 0) OR (FLOOR(${start})::INTEGER * -1) > LENGTH(${current}) then ''
55
+ when (${sqlRound(length)} < 0) OR (${sqlRound(start)} * -1) > LENGTH(${current}) then ''
53
56
  else
54
57
  SUBSTRING(${current},
55
58
  (case
56
- when FLOOR(${start})::INTEGER < 0 then (LENGTH(${current}) + FLOOR(${start})::INTEGER + 1)
57
- when FLOOR(${start})::INTEGER = 0 then 1
58
- else FLOOR(${start})::INTEGER
59
- end),
60
- FLOOR(${length})::INTEGER)
59
+ when ${sqlRound(start)} < 0 then (LENGTH(${current}) + ${sqlRound(start)} + 1)
60
+ when ${sqlRound(start)} = 0 then 1
61
+ else ${sqlRound(start)}
62
+ end)::INTEGER,
63
+ ${sqlRound(length)}::INTEGER)
61
64
  end
62
65
  )`.trim();
63
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mid.js","sourceRoot":"","sources":["../../../src/functions/mid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,aAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;SACxC;QACD;YACI,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE;gBACP,aAAa;gBACb,6BAA6B,CAAC,CAAC,CAAC;gBAChC,SAAS;aACZ;SACJ;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACjE,OAAO,GAAG,0BAA0B,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC;AACtF,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC7D,OAAO,aAAa,OAAO,WAAW,KAAK,qBAAqB,MAAM,aAAa,CAAC;AACxF,CAAC;AAED,SAAS,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACvD,OAAO;;eAEI,OAAO,eAAe,KAAK,eAAe,MAAM;gBAC/C,MAAM,6BAA6B,KAAK,6BAA6B,OAAO;;oBAExE,OAAO;;6BAEE,KAAK,+BAA+B,OAAO,aAAa,KAAK;6BAC7D,KAAK;6BACL,KAAK;;oBAEd,MAAM;;MAEpB,CAAC,IAAI,EAAE,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC5D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"mid.js","sourceRoot":"","sources":["../../../src/functions/mid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,aAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;SACxC;QACD;YACI,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE;gBACP,aAAa;gBACb,6BAA6B,CAAC,CAAC,CAAC;gBAChC,SAAS;aACZ;SACJ;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACjE,OAAO,GAAG,0BAA0B,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC;AACtF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,cAAc,KAAK,mBAAmB,KAAK,2BAA2B,CAAC;AAClF,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC7D,OAAO,aAAa,OAAO,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7E,CAAC;AAED,SAAS,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IACvD,OAAO;;eAEI,OAAO,eAAe,KAAK,eAAe,MAAM;UACrD,QAAQ,CAAC,MAAM,CAAC,aAAa,QAAQ,CACvC,KAAK,CACR,mBAAmB,OAAO;;oBAEX,OAAO;;uBAEJ,QAAQ,CACX,KAAK,CACR,qBAAqB,OAAO,OAAO,QAAQ,CAAC,KAAK,CAAC;uBAC5C,QAAQ,CAAC,KAAK,CAAC;uBACf,QAAQ,CAAC,KAAK,CAAC;;cAExB,QAAQ,CAAC,MAAM,CAAC;;MAExB,CAAC,IAAI,EAAE,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC5D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FunctionDefinition } from '../constants/interfaces';
2
+ /**
3
+ * Returns the millisecond of a datetime value. The millisecond is given as an integer ranging from 0 to 999
4
+ */
5
+ export declare const MILLISECOND: FunctionDefinition;
@@ -0,0 +1,52 @@
1
+ import { millisecondScript } from '../utils/elasticsearch/scripts';
2
+ import { isDateParam } from '../utils';
3
+ import { AST_PRIMITIVES } from '../constants';
4
+ /**
5
+ * Returns the millisecond of a datetime value. The millisecond is given as an integer ranging from 0 to 999
6
+ */
7
+ export const MILLISECOND = {
8
+ identifier: 'MILLISECOND',
9
+ parameters: [
10
+ {
11
+ identifier: 'DATE',
12
+ optional: false,
13
+ expectedPrimitive: AST_PRIMITIVES.DATE,
14
+ validator: [isDateParam],
15
+ },
16
+ ],
17
+ transpiler: {
18
+ elasticsearch,
19
+ snowflake,
20
+ redshift,
21
+ postgresql,
22
+ },
23
+ primitiveResult: AST_PRIMITIVES.NUMBER,
24
+ };
25
+ function elasticsearch(value) {
26
+ return millisecondScript(value);
27
+ }
28
+ function snowflake(value) {
29
+ /**
30
+ * Extracts the nanosecond value from a given date and divides it by 1,000,000.
31
+ */
32
+ return `(EXTRACT(nanosecond FROM ${value}) / 1000000)`;
33
+ }
34
+ function redshift(value) {
35
+ /*
36
+ Operation that calculates the milliseconds of a given date value.
37
+ Milliseconds - (seconds * 1000)
38
+ ex.
39
+ 2500 - (2 * 1000) = 500
40
+ */
41
+ return `(DATE_PART(milliseconds, ${value}) - (FLOOR(DATE_PART(seconds, ${value})) * 1000))`;
42
+ }
43
+ function postgresql(value) {
44
+ /*
45
+ Operation that calculates the milliseconds of a given date value.
46
+ Milliseconds - (seconds * 1000)
47
+ ex.
48
+ 2500 - (2 * 1000) = 500
49
+ */
50
+ return `(EXTRACT(milliseconds FROM ${value}) - (FLOOR(EXTRACT(seconds FROM ${value})) * 1000))`;
51
+ }
52
+ //# sourceMappingURL=millisecond.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"millisecond.js","sourceRoot":"","sources":["../../../src/functions/millisecond.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC3C,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,IAAI;YACtC,SAAS,EAAE,CAAC,WAAW,CAAC;SAC3B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B;;OAEG;IACH,OAAO,4BAA4B,KAAK,cAAc,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B;;;;;MAKE;IACF,OAAO,4BAA4B,KAAK,iCAAiC,KAAK,aAAa,CAAC;AAChG,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B;;;;;MAKE;IACF,OAAO,8BAA8B,KAAK,mCAAmC,KAAK,aAAa,CAAC;AACpG,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FunctionDefinition } from '../constants/interfaces';
2
+ /**
3
+ * `TEXT` Transforms a number into a string.
4
+ */
5
+ export declare const TEXT: FunctionDefinition;
@@ -0,0 +1,39 @@
1
+ import { AST_PRIMITIVES } from '../constants';
2
+ import { isNumberParam } from '../utils';
3
+ /**
4
+ * `TEXT` Transforms a number into a string.
5
+ */
6
+ export const TEXT = {
7
+ identifier: 'TEXT',
8
+ parameters: [
9
+ {
10
+ identifier: 'VALUE',
11
+ optional: false,
12
+ expectedPrimitive: AST_PRIMITIVES.STRING,
13
+ validator: [isNumberParam],
14
+ },
15
+ ],
16
+ transpiler: {
17
+ elasticsearch,
18
+ snowflake,
19
+ redshift,
20
+ postgresql,
21
+ },
22
+ primitiveResult: AST_PRIMITIVES.NUMBER,
23
+ };
24
+ function elasticsearch(value) {
25
+ return `TEXT(${value})`;
26
+ }
27
+ function SQL(value) {
28
+ return `${value}::VARCHAR`;
29
+ }
30
+ function snowflake(value) {
31
+ return SQL(value);
32
+ }
33
+ function redshift(value) {
34
+ return SQL(value);
35
+ }
36
+ function postgresql(value) {
37
+ return SQL(value);
38
+ }
39
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/functions/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAuB;IACpC,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,OAAO;YACnB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,aAAa,CAAC;SAC7B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,QAAQ,KAAK,GAAG,CAAC;AAC5B,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACtB,OAAO,GAAG,KAAK,WAAW,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { dateFormatScript, evenScript, expScript, greatestScript, includeScript, isNullScript, leastScript, lengthScript, logScript, oddScript, powerScript, properScript, replaceScript, roundDownScript, roundScript, roundUpScript, sqrtScript, subStringScript, } from './scripts';
1
+ import { dateFormatScript, evenScript, expScript, greatestScript, includeScript, isNullScript, leastScript, lengthScript, logScript, oddScript, powerScript, properScript, replaceScript, roundDownScript, roundScript, roundUpScript, sqrtScript, subStringScript, textScript, } from './scripts';
2
2
  export { toDate, setTimezoneToColumnDate } from './scripts';
3
3
  export function customFunctionsList(func) {
4
4
  switch (func) {
@@ -8,6 +8,7 @@ export function customFunctionsList(func) {
8
8
  case 'HOUR':
9
9
  case 'MINUTE':
10
10
  case 'SECOND':
11
+ case 'MILLISECOND':
11
12
  return dateFormatScript;
12
13
  case 'MID':
13
14
  case 'LEFT':
@@ -46,6 +47,8 @@ export function customFunctionsList(func) {
46
47
  return roundDownScript;
47
48
  case 'ROUNDUP':
48
49
  return roundUpScript;
50
+ case 'TEXT':
51
+ return textScript;
49
52
  default:
50
53
  return false;
51
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,eAAe,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC5C,QAAQ,IAAI,EAAE;QACV,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACT,OAAO,gBAAgB,CAAC;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACR,OAAO,eAAe,CAAC;QAC3B,KAAK,QAAQ;YACT,OAAO,YAAY,CAAC;QACxB,KAAK,QAAQ;YACT,OAAO,YAAY,CAAC;QACxB,KAAK,KAAK;YACN,OAAO,cAAc,CAAC;QAC1B,KAAK,KAAK;YACN,OAAO,WAAW,CAAC;QACvB,KAAK,QAAQ;YACT,OAAO,YAAY,CAAC;QACxB,KAAK,MAAM;YACP,OAAO,UAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,SAAS,CAAC;QACrB,KAAK,SAAS;YACV,OAAO,aAAa,CAAC;QACzB,KAAK,SAAS;YACV,OAAO,aAAa,CAAC;QACzB,KAAK,MAAM;YACP,OAAO,UAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,SAAS,CAAC;QACrB,KAAK,KAAK;YACN,OAAO,SAAS,CAAC;QACrB,KAAK,OAAO;YACR,OAAO,WAAW,CAAC;QACvB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACR,OAAO,WAAW,CAAC;QACvB,KAAK,WAAW;YACZ,OAAO,eAAe,CAAC;QAC3B,KAAK,SAAS;YACV,OAAO,aAAa,CAAC;QACzB;YACI,OAAO,KAAK,CAAC;KACpB;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,eAAe,EACf,UAAU,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC5C,QAAQ,IAAI,EAAE;QACV,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,aAAa;YACd,OAAO,gBAAgB,CAAC;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACR,OAAO,eAAe,CAAC;QAC3B,KAAK,QAAQ;YACT,OAAO,YAAY,CAAC;QACxB,KAAK,QAAQ;YACT,OAAO,YAAY,CAAC;QACxB,KAAK,KAAK;YACN,OAAO,cAAc,CAAC;QAC1B,KAAK,KAAK;YACN,OAAO,WAAW,CAAC;QACvB,KAAK,QAAQ;YACT,OAAO,YAAY,CAAC;QACxB,KAAK,MAAM;YACP,OAAO,UAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,SAAS,CAAC;QACrB,KAAK,SAAS;YACV,OAAO,aAAa,CAAC;QACzB,KAAK,SAAS;YACV,OAAO,aAAa,CAAC;QACzB,KAAK,MAAM;YACP,OAAO,UAAU,CAAC;QACtB,KAAK,KAAK;YACN,OAAO,SAAS,CAAC;QACrB,KAAK,KAAK;YACN,OAAO,SAAS,CAAC;QACrB,KAAK,OAAO;YACR,OAAO,WAAW,CAAC;QACvB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACR,OAAO,WAAW,CAAC;QACvB,KAAK,WAAW;YACZ,OAAO,eAAe,CAAC;QAC3B,KAAK,SAAS;YACV,OAAO,aAAa,CAAC;QACzB,KAAK,MAAM;YACP,OAAO,UAAU,CAAC;QACtB;YACI,OAAO,KAAK,CAAC;KACpB;AACL,CAAC"}
@@ -2,13 +2,16 @@ import { DateDifUnitParam } from '../../constants/interfaces';
2
2
  export declare function toDate(value: string): string;
3
3
  export declare const setTimezoneToColumnDate: string;
4
4
  export declare const dateFormatScript: string;
5
- export declare const subStringScript: string;
6
5
  export declare const dayScript: (value: any) => string;
7
6
  export declare const monthScript: (value: any) => string;
8
7
  export declare const yearScript: (value: any) => string;
9
- export declare const hourScript: (value: any) => string;
8
+ export declare const hourScript: (value: any, timeFormat?: string) => string;
10
9
  export declare const minuteScript: (value: any) => string;
11
10
  export declare const secondScript: (value: any) => string;
11
+ /**
12
+ * Extracts the nanosecond value from a given date and divides it by 1,000,000.
13
+ */
14
+ export declare const millisecondScript: (value: any) => string;
12
15
  export declare function dateDif(start: any, end: any, unit: DateDifUnitParam): string;
13
16
  export declare const getValueScript = "def GET_VALUE(def c){return (c.empty ? null : c.value)}";
14
17
  export declare const isNullScript = "def IS_NULL_SCRIPT(def value, def replacement) { return value ?: replacement; }";
@@ -27,3 +30,5 @@ export declare const powerScript = "def POWER(def value, def numberToRaise) {\n
27
30
  export declare const roundDownScript = "def ROUNDDOWN(def value, def places) {\n if (value == null || places == null) return null; \n if (places > 10) places = 10;\n if (places < 0) places = 0;\n def _value = Math.abs(value);\n def sign = value < 0 ? -1 : 1;\n def scale = Math.pow(10, places);\n return (Math.floor(_value * scale) / scale) * sign;\n}";
28
31
  export declare const roundScript: string;
29
32
  export declare const roundUpScript: string;
33
+ export declare const subStringScript: string;
34
+ export declare const textScript = "def TEXT(def v) { return v == null ? null : v.toString(); }";
@@ -25,35 +25,26 @@ String ${SCRIPT_NAMES.dateFormat}(def date_value, String format) {
25
25
  return DateTimeFormatter.ofPattern(format).format(date_value)
26
26
  }
27
27
  `;
28
- export const subStringScript = `
29
- String ${SCRIPT_NAMES.subString}(def text, def start, def end) {
30
- if (text == null || start == null || end == null) return null;
31
- text = (String) text;
32
- start = (int) Math.floor(start);
33
- end = (int) Math.floor(end);
34
- int first = 0;
35
- if (end < 0 || (start * -1 > text.length())) return "";
36
- if (start < 0) {
37
- first = (int) Math.max(text.length() + start, 0);
38
- } else if (start == 0) {
39
- first = 0;
40
- } else {
41
- first = (int) Math.min(start - 1, text.length())
42
- }
43
-
44
- int last = (int) Math.min(first + end, text.length());
45
- return text.substring(first, last);
46
- }
47
- `;
48
28
  function dateFormatToInt(value, format) {
49
29
  return `Integer.parseInt(${SCRIPT_NAMES.dateFormat}(${value}, '${format}'))`;
50
30
  }
51
31
  export const dayScript = (value) => dateFormatToInt(value, 'dd');
52
32
  export const monthScript = (value) => dateFormatToInt(value, 'MM');
53
33
  export const yearScript = (value) => dateFormatToInt(value, 'yyyy');
54
- export const hourScript = (value) => dateFormatToInt(value, 'HH');
34
+ export const hourScript = (value, timeFormat) => {
35
+ if (timeFormat === '12h') {
36
+ return dateFormatToInt(value, 'hh');
37
+ }
38
+ else {
39
+ return dateFormatToInt(value, 'HH');
40
+ }
41
+ };
55
42
  export const minuteScript = (value) => dateFormatToInt(value, 'mm');
56
43
  export const secondScript = (value) => dateFormatToInt(value, 'ss');
44
+ /**
45
+ * Extracts the nanosecond value from a given date and divides it by 1,000,000.
46
+ */
47
+ export const millisecondScript = (value) => `(${dateFormatToInt(value, 'n')} / 1000000.0)`;
57
48
  export function dateDif(start, end, unit) {
58
49
  const units = {
59
50
  Y: 'YEARS',
@@ -194,4 +185,25 @@ def ROUNDUP(def value, def places) {
194
185
  def scale = Math.pow(10, places);
195
186
  return (Math.ceil(_value * scale) / scale) * sign;
196
187
  }`;
188
+ export const subStringScript = `${roundDownScript}
189
+ String ${SCRIPT_NAMES.subString}(def text, def start, def end) {
190
+ if (text == null || start == null || end == null) return null;
191
+ text = (String) text;
192
+ start = ROUNDDOWN(start, 0);
193
+ end = ROUNDDOWN(end, 0);
194
+ int first = 0;
195
+ if (end < 0 || (start * -1 > text.length())) return "";
196
+ if (start < 0) {
197
+ first = (int) Math.max(text.length() + start, 0);
198
+ } else if (start == 0) {
199
+ first = 0;
200
+ } else {
201
+ first = (int) Math.min(start - 1, text.length())
202
+ }
203
+
204
+ int last = (int) Math.min(first + end, text.length());
205
+ return text.substring(first, last);
206
+ }
207
+ `;
208
+ export const textScript = `def TEXT(def v) { return v == null ? null : v.toString(); }`;
197
209
  //# sourceMappingURL=scripts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/scripts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,UAAU,MAAM,CAAC,KAAa;IAChC,OAAO,wBAAwB,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;MACjC,YAAY,CAAC,WAAW;;;;;;;;;;;CAW7B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;SACvB,YAAY,CAAC,UAAU;;;;;;;;CAQ/B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;SACtB,YAAY,CAAC,SAAS;;;;;;;;;;;;;;;;;;CAkB9B,CAAC;AAEF,SAAS,eAAe,CAAC,KAAU,EAAE,MAAc;IAC/C,OAAO,oBAAoB,YAAY,CAAC,UAAU,IAAI,KAAK,MAAM,MAAM,KAAK,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAEzE,MAAM,UAAU,OAAO,CAAC,KAAU,EAAE,GAAQ,EAAE,IAAsB;IAChE,MAAM,KAAK,GAAG;QACV,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,MAAM;KACZ,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,cAAc,WAAW,YAAY,KAAK,KAAK,GAAG,GAAG,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,yDAAyD,CAAC;AAExF,MAAM,CAAC,MAAM,YAAY,GAAG,iFAAiF,CAAC;AAE9G,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;IAkBxB,CAAC;AAEL,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EAwB5B,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EAwBzB,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,4DAA4D,CAAC;AAEzF,MAAM,CAAC,MAAM,UAAU,GAAG,2EAA2E,CAAC;AAEtG,MAAM,CAAC,MAAM,SAAS,GAAG,6DAA6D,CAAC;AAEvF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;EAI3B,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,oIAAoI,CAAC;AAElK,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;EAKxB,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;EAIvB,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;EAKvB,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;EAIzB,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;EAQ7B,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,eAAe;;;;;;;;;EAS3C,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,eAAe;;;;;;;;;EAS7C,CAAC"}
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../../src/utils/elasticsearch/scripts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/formula-lang",
3
- "version": "2.0.1-rc.523",
3
+ "version": "2.0.1-rc.part-5",
4
4
  "description": "QFormula support for qrvey projects",
5
5
  "types": "dist/module/index.d.ts",
6
6
  "main": "dist/module/index.js",