@simplysm/orm-common 13.0.75 → 13.0.77

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 (135) hide show
  1. package/README.md +575 -50
  2. package/dist/create-db-context.d.ts +1 -1
  3. package/dist/create-db-context.d.ts.map +1 -1
  4. package/dist/create-db-context.js +34 -27
  5. package/dist/create-db-context.js.map +1 -1
  6. package/dist/ddl/initialize.js +4 -4
  7. package/dist/ddl/initialize.js.map +1 -1
  8. package/dist/ddl/relation-ddl.d.ts +7 -7
  9. package/dist/ddl/relation-ddl.d.ts.map +1 -1
  10. package/dist/ddl/relation-ddl.js +18 -18
  11. package/dist/ddl/relation-ddl.js.map +1 -1
  12. package/dist/ddl/schema-ddl.d.ts +1 -1
  13. package/dist/ddl/schema-ddl.d.ts.map +1 -1
  14. package/dist/ddl/schema-ddl.js +2 -2
  15. package/dist/ddl/schema-ddl.js.map +1 -1
  16. package/dist/ddl/table-ddl.js +2 -2
  17. package/dist/ddl/table-ddl.js.map +1 -1
  18. package/dist/exec/queryable.d.ts +24 -24
  19. package/dist/exec/queryable.d.ts.map +1 -1
  20. package/dist/exec/queryable.js +37 -37
  21. package/dist/exec/queryable.js.map +1 -1
  22. package/dist/expr/expr-unit.js +1 -1
  23. package/dist/expr/expr-unit.js.map +1 -1
  24. package/dist/expr/expr.d.ts +9 -9
  25. package/dist/expr/expr.d.ts.map +1 -1
  26. package/dist/expr/expr.js +10 -10
  27. package/dist/expr/expr.js.map +1 -1
  28. package/dist/query-builder/base/expr-renderer-base.d.ts +2 -2
  29. package/dist/query-builder/base/expr-renderer-base.d.ts.map +1 -1
  30. package/dist/query-builder/base/query-builder-base.d.ts +7 -15
  31. package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
  32. package/dist/query-builder/base/query-builder-base.js +2 -2
  33. package/dist/query-builder/base/query-builder-base.js.map +1 -1
  34. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
  35. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
  36. package/dist/query-builder/mssql/mssql-expr-renderer.js +8 -8
  37. package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
  38. package/dist/query-builder/mssql/mssql-query-builder.d.ts +7 -7
  39. package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
  40. package/dist/query-builder/mssql/mssql-query-builder.js +7 -7
  41. package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -1
  42. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
  43. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
  44. package/dist/query-builder/mysql/mysql-expr-renderer.js +9 -9
  45. package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -1
  46. package/dist/query-builder/mysql/mysql-query-builder.d.ts +7 -7
  47. package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
  48. package/dist/query-builder/mysql/mysql-query-builder.js +11 -11
  49. package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
  50. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
  51. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
  52. package/dist/query-builder/postgresql/postgresql-expr-renderer.js +8 -8
  53. package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -1
  54. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +7 -7
  55. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
  56. package/dist/query-builder/postgresql/postgresql-query-builder.js +7 -7
  57. package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
  58. package/dist/schema/procedure-builder.d.ts +1 -1
  59. package/dist/schema/table-builder.d.ts +1 -1
  60. package/dist/schema/table-builder.d.ts.map +1 -1
  61. package/dist/schema/table-builder.js +1 -1
  62. package/dist/schema/view-builder.d.ts +1 -1
  63. package/dist/schema/view-builder.d.ts.map +1 -1
  64. package/dist/schema/view-builder.js +1 -1
  65. package/dist/types/db-context-def.d.ts +18 -18
  66. package/dist/types/db-context-def.d.ts.map +1 -1
  67. package/dist/types/expr.d.ts +6 -6
  68. package/dist/types/expr.d.ts.map +1 -1
  69. package/dist/types/query-def.d.ts +15 -15
  70. package/dist/types/query-def.d.ts.map +1 -1
  71. package/dist/types/query-def.js +6 -6
  72. package/dist/utils/result-parser.d.ts.map +1 -1
  73. package/dist/utils/result-parser.js +44 -16
  74. package/dist/utils/result-parser.js.map +1 -1
  75. package/package.json +2 -2
  76. package/src/create-db-context.ts +36 -29
  77. package/src/ddl/initialize.ts +4 -4
  78. package/src/ddl/relation-ddl.ts +16 -16
  79. package/src/ddl/schema-ddl.ts +2 -2
  80. package/src/ddl/table-ddl.ts +2 -2
  81. package/src/exec/queryable.ts +58 -58
  82. package/src/expr/expr-unit.ts +1 -1
  83. package/src/expr/expr.ts +13 -13
  84. package/src/query-builder/base/expr-renderer-base.ts +2 -2
  85. package/src/query-builder/base/query-builder-base.ts +18 -14
  86. package/src/query-builder/mssql/mssql-expr-renderer.ts +11 -10
  87. package/src/query-builder/mssql/mssql-query-builder.ts +13 -13
  88. package/src/query-builder/mysql/mysql-expr-renderer.ts +12 -11
  89. package/src/query-builder/mysql/mysql-query-builder.ts +17 -17
  90. package/src/query-builder/postgresql/postgresql-expr-renderer.ts +11 -10
  91. package/src/query-builder/postgresql/postgresql-query-builder.ts +13 -13
  92. package/src/schema/procedure-builder.ts +1 -1
  93. package/src/schema/table-builder.ts +1 -1
  94. package/src/schema/view-builder.ts +1 -1
  95. package/src/types/db-context-def.ts +18 -18
  96. package/src/types/expr.ts +6 -6
  97. package/src/types/query-def.ts +31 -31
  98. package/src/utils/result-parser.ts +60 -16
  99. package/tests/db-context/create-db-context.spec.ts +6 -37
  100. package/tests/db-context/define-db-context.spec.ts +0 -51
  101. package/tests/ddl/basic.expected.ts +8 -8
  102. package/tests/ddl/basic.spec.ts +24 -181
  103. package/tests/ddl/column-builder.spec.ts +0 -112
  104. package/tests/ddl/index-builder.spec.ts +10 -64
  105. package/tests/ddl/procedure-builder.spec.ts +0 -106
  106. package/tests/ddl/relation-builder.spec.ts +4 -205
  107. package/tests/ddl/table-builder.spec.ts +0 -34
  108. package/tests/ddl/view-builder.spec.ts +0 -60
  109. package/tests/dml/delete.spec.ts +0 -33
  110. package/tests/dml/insert.spec.ts +0 -78
  111. package/tests/dml/update.spec.ts +2 -98
  112. package/tests/dml/upsert.spec.ts +0 -52
  113. package/tests/errors/queryable-errors.spec.ts +0 -51
  114. package/tests/escape.spec.ts +0 -41
  115. package/tests/examples/pivot.spec.ts +0 -333
  116. package/tests/examples/sampling.spec.ts +0 -63
  117. package/tests/examples/unpivot.spec.ts +0 -65
  118. package/tests/exec/search-parser.spec.ts +0 -16
  119. package/tests/expr/comparison.spec.ts +0 -66
  120. package/tests/expr/conditional.expected.ts +2 -2
  121. package/tests/expr/conditional.spec.ts +8 -35
  122. package/tests/expr/date.spec.ts +5 -72
  123. package/tests/expr/math.spec.ts +0 -47
  124. package/tests/expr/string.spec.ts +0 -56
  125. package/tests/expr/utility.spec.ts +0 -27
  126. package/tests/select/basic.spec.ts +5 -74
  127. package/tests/select/filter.spec.ts +0 -114
  128. package/tests/select/group.spec.ts +0 -85
  129. package/tests/select/join.spec.ts +0 -113
  130. package/tests/select/order.spec.ts +0 -49
  131. package/tests/select/subquery.spec.ts +0 -96
  132. package/tests/select/window.spec.ts +0 -185
  133. package/tests/types/nullable-queryable-record.spec.ts +0 -48
  134. package/tests/utils/result-parser-perf.spec.ts +0 -67
  135. package/tests/utils/result-parser.spec.ts +4 -38
@@ -39,67 +39,4 @@ describe("EXAMPLE - Random sampling", () => {
39
39
  });
40
40
  });
41
41
 
42
- describe("Conditional sampling (WHERE + ORDER BY RANDOM + TOP)", () => {
43
- const db = createTestDb();
44
- const def = db
45
- .user()
46
- .where((item) => [expr.gte(item.age, 20)])
47
- .orderBy(() => expr.random())
48
- .top(3)
49
- .getSelectQueryDef();
50
-
51
- it("Verify QueryDef", () => {
52
- expect(def).toEqual({
53
- type: "select",
54
- as: "T1",
55
- from: { database: "TestDb", schema: "TestSchema", name: "User" },
56
- where: [
57
- {
58
- type: "gte",
59
- source: { type: "column", path: ["T1", "age"] },
60
- target: { type: "value", value: 20 },
61
- },
62
- ],
63
- orderBy: [[{ type: "random" }]],
64
- top: 3,
65
- });
66
- });
67
-
68
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
69
- const builder = createQueryBuilder(dialect);
70
- expect(builder.build(def)).toMatchSql(expected.samplingWithWhere[dialect]);
71
- });
72
- });
73
-
74
- describe("Column selection with sampling", () => {
75
- const db = createTestDb();
76
- const def = db
77
- .user()
78
- .select((item) => ({
79
- id: item.id,
80
- name: item.name,
81
- }))
82
- .orderBy(() => expr.random())
83
- .top(10)
84
- .getSelectQueryDef();
85
-
86
- it("Verify QueryDef", () => {
87
- expect(def).toEqual({
88
- type: "select",
89
- as: "T1",
90
- from: { database: "TestDb", schema: "TestSchema", name: "User" },
91
- select: {
92
- id: { type: "column", path: ["T1", "id"] },
93
- name: { type: "column", path: ["T1", "name"] },
94
- },
95
- orderBy: [[{ type: "random" }]],
96
- top: 10,
97
- });
98
- });
99
-
100
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
101
- const builder = createQueryBuilder(dialect);
102
- expect(builder.build(def)).toMatchSql(expected.samplingWithSelect[dialect]);
103
- });
104
- });
105
42
  });
@@ -79,71 +79,6 @@ describe("SELECT - UNPIVOT (join + union)", () => {
79
79
  });
80
80
  });
81
81
 
82
- describe("2-column unpivot", () => {
83
- const db = createTestDb();
84
- const def = db
85
- .monthlySales()
86
- .join("unpvt", (qr, c) =>
87
- qr.union(
88
- qr.select({ period: expr.val("string", "jan"), value: c.jan }),
89
- qr.select({ period: expr.val("string", "feb"), value: c.feb }),
90
- ),
91
- )
92
- .select((item) => ({
93
- id: item.id,
94
- category: item.category,
95
- mar: item.mar,
96
- period: item.unpvt![0].period,
97
- value: item.unpvt![0].value,
98
- }))
99
- .getSelectQueryDef();
100
-
101
- it("Verify QueryDef", () => {
102
- expect(def).toEqual({
103
- type: "select",
104
- as: "T1",
105
- from: { database: "TestDb", schema: "TestSchema", name: "MonthlySales" },
106
- select: {
107
- id: { type: "column", path: ["T1", "id"] },
108
- category: { type: "column", path: ["T1", "category"] },
109
- mar: { type: "column", path: ["T1", "mar"] },
110
- period: { type: "column", path: ["T1.unpvt", "period"] },
111
- value: { type: "column", path: ["T1.unpvt", "value"] },
112
- },
113
- joins: [
114
- {
115
- type: "select",
116
- as: "T1.unpvt",
117
- from: [
118
- {
119
- type: "select",
120
- as: "T1.unpvt",
121
- select: {
122
- period: { type: "value", value: "jan" },
123
- value: { type: "column", path: ["T1", "jan"] },
124
- },
125
- },
126
- {
127
- type: "select",
128
- as: "T1.unpvt",
129
- select: {
130
- period: { type: "value", value: "feb" },
131
- value: { type: "column", path: ["T1", "feb"] },
132
- },
133
- },
134
- ],
135
- isSingle: false,
136
- },
137
- ],
138
- });
139
- });
140
-
141
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
142
- const builder = createQueryBuilder(dialect);
143
- expect(builder.build(def)).toMatchSql(expected.unpivotTwoColumns[dialect]);
144
- });
145
- });
146
-
147
82
  describe("WHERE -> UNPIVOT", () => {
148
83
  const db = createTestDb();
149
84
  const def = db
@@ -56,14 +56,6 @@ describe("parseSearchQuery", () => {
56
56
  });
57
57
  });
58
58
 
59
- it("Multiple identical prefixes", () => {
60
- expect(parseSearchQuery("+사과 +바나나")).toEqual({
61
- or: [],
62
- must: ["%사과%", "%바나나%"],
63
- not: [],
64
- });
65
- });
66
-
67
59
  it("Ignore when only prefixes present", () => {
68
60
  expect(parseSearchQuery("+ - ")).toEqual({ or: [], must: [], not: [] });
69
61
  expect(parseSearchQuery("+ 사과")).toEqual({ or: ["%사과%"], must: [], not: [] });
@@ -148,14 +140,6 @@ describe("parseSearchQuery", () => {
148
140
  });
149
141
  });
150
142
 
151
- it("* on both sides → contains search (explicit)", () => {
152
- expect(parseSearchQuery("*사과*")).toEqual({
153
- or: ["%사과%"],
154
- must: [],
155
- not: [],
156
- });
157
- });
158
-
159
143
  it("* in middle → middle wildcard", () => {
160
144
  expect(parseSearchQuery("사*과")).toEqual({
161
145
  or: ["사%과"],
@@ -69,19 +69,6 @@ describe("Expr - Comparison operators (null-safe)", () => {
69
69
  .where((item) => [expr.gt(item.age, 20)])
70
70
  .getSelectQueryDef();
71
71
 
72
- it("Verify QueryDef", () => {
73
- expect(def).toMatchObject({
74
- type: "select",
75
- where: [
76
- {
77
- type: "gt",
78
- source: { type: "column", path: ["T1", "age"] },
79
- target: { type: "value", value: 20 },
80
- },
81
- ],
82
- });
83
- });
84
-
85
72
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
86
73
  const builder = createQueryBuilder(dialect);
87
74
  expect(builder.build(def)).toMatchSql(expected.gt[dialect]);
@@ -95,19 +82,6 @@ describe("Expr - Comparison operators (null-safe)", () => {
95
82
  .where((item) => [expr.lt(item.age, 30)])
96
83
  .getSelectQueryDef();
97
84
 
98
- it("Verify QueryDef", () => {
99
- expect(def).toMatchObject({
100
- type: "select",
101
- where: [
102
- {
103
- type: "lt",
104
- source: { type: "column", path: ["T1", "age"] },
105
- target: { type: "value", value: 30 },
106
- },
107
- ],
108
- });
109
- });
110
-
111
85
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
112
86
  const builder = createQueryBuilder(dialect);
113
87
  expect(builder.build(def)).toMatchSql(expected.lt[dialect]);
@@ -121,19 +95,6 @@ describe("Expr - Comparison operators (null-safe)", () => {
121
95
  .where((item) => [expr.gte(item.age, 18)])
122
96
  .getSelectQueryDef();
123
97
 
124
- it("Verify QueryDef", () => {
125
- expect(def).toMatchObject({
126
- type: "select",
127
- where: [
128
- {
129
- type: "gte",
130
- source: { type: "column", path: ["T1", "age"] },
131
- target: { type: "value", value: 18 },
132
- },
133
- ],
134
- });
135
- });
136
-
137
98
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
138
99
  const builder = createQueryBuilder(dialect);
139
100
  expect(builder.build(def)).toMatchSql(expected.gte[dialect]);
@@ -147,19 +108,6 @@ describe("Expr - Comparison operators (null-safe)", () => {
147
108
  .where((item) => [expr.lte(item.age, 65)])
148
109
  .getSelectQueryDef();
149
110
 
150
- it("Verify QueryDef", () => {
151
- expect(def).toMatchObject({
152
- type: "select",
153
- where: [
154
- {
155
- type: "lte",
156
- source: { type: "column", path: ["T1", "age"] },
157
- target: { type: "value", value: 65 },
158
- },
159
- ],
160
- });
161
- });
162
-
163
111
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
164
112
  const builder = createQueryBuilder(dialect);
165
113
  expect(builder.build(def)).toMatchSql(expected.lte[dialect]);
@@ -227,20 +175,6 @@ describe("Expr - Comparison operators (null-safe)", () => {
227
175
  .where((item) => [expr.between(item.age, undefined, 30)])
228
176
  .getSelectQueryDef();
229
177
 
230
- it("Verify QueryDef", () => {
231
- expect(def).toMatchObject({
232
- type: "select",
233
- where: [
234
- {
235
- type: "between",
236
- source: { type: "column", path: ["T1", "age"] },
237
- from: undefined,
238
- to: { type: "value", value: 30 },
239
- },
240
- ],
241
- });
242
- });
243
-
244
178
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
245
179
  const builder = createQueryBuilder(dialect);
246
180
  expect(builder.build(def)).toMatchSql(expected.betweenToOnly[dialect]);
@@ -1,7 +1,7 @@
1
1
  import { mysql, pgsql, tsql } from "@simplysm/core-common";
2
2
  import type { ExpectedSql } from "../setup/test-utils";
3
3
 
4
- export const ifNull: ExpectedSql = {
4
+ export const coalesce: ExpectedSql = {
5
5
  mysql: mysql`
6
6
  SELECT COALESCE(\`T1\`.\`name\`, 'Unknown') AS \`nameOrDefault\`
7
7
  FROM \`TestDb\`.\`User\` AS \`T1\`
@@ -118,7 +118,7 @@ export const least: ExpectedSql = {
118
118
  `,
119
119
  };
120
120
 
121
- export const ifNullMultiple: ExpectedSql = {
121
+ export const coalesceMultiple: ExpectedSql = {
122
122
  mysql: mysql`
123
123
  SELECT COALESCE(\`T1\`.\`email\`, \`T1\`.\`name\`, 'Anonymous') AS \`firstValid\`
124
124
  FROM \`TestDb\`.\`User\` AS \`T1\`
@@ -7,19 +7,19 @@ import "../setup/test-utils"; // toMatchSql matcher
7
7
  import * as expected from "./conditional.expected";
8
8
 
9
9
  describe("Expr - Conditional functions", () => {
10
- describe("ifNull - null replacement", () => {
10
+ describe("coalesce - null replacement", () => {
11
11
  const db = createTestDb();
12
12
  const def = db
13
13
  .user()
14
14
  .select((item) => ({
15
- nameOrDefault: expr.ifNull(item.name, "Unknown"),
15
+ nameOrDefault: expr.coalesce(item.name, "Unknown"),
16
16
  }))
17
17
  .getSelectQueryDef();
18
18
 
19
19
  it("Verify QueryDef", () => {
20
20
  expect(def.select).toMatchObject({
21
21
  nameOrDefault: {
22
- type: "ifNull",
22
+ type: "coalesce",
23
23
  args: [
24
24
  { type: "column", path: ["T1", "name"] },
25
25
  { type: "value", value: "Unknown" },
@@ -30,7 +30,7 @@ describe("Expr - Conditional functions", () => {
30
30
 
31
31
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
32
32
  const builder = createQueryBuilder(dialect);
33
- expect(builder.build(def)).toMatchSql(expected.ifNull[dialect]);
33
+ expect(builder.build(def)).toMatchSql(expected.coalesce[dialect]);
34
34
  });
35
35
  });
36
36
 
@@ -190,33 +190,6 @@ describe("Expr - Conditional functions", () => {
190
190
  });
191
191
  });
192
192
 
193
- describe("least - minimum value", () => {
194
- const db = createTestDb();
195
- const def = db
196
- .user()
197
- .select((item) => ({
198
- minVal: expr.least(item.age, 100),
199
- }))
200
- .getSelectQueryDef();
201
-
202
- it("Verify QueryDef", () => {
203
- expect(def.select).toMatchObject({
204
- minVal: {
205
- type: "least",
206
- args: expect.arrayContaining([
207
- { type: "column", path: ["T1", "age"] },
208
- { type: "value", value: 100 },
209
- ]),
210
- },
211
- });
212
- });
213
-
214
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
215
- const builder = createQueryBuilder(dialect);
216
- expect(builder.build(def)).toMatchSql(expected.least[dialect]);
217
- });
218
- });
219
-
220
193
  describe("switch - all case/default are undefined", () => {
221
194
  it("throws an error", () => {
222
195
  const db = createTestDb();
@@ -246,19 +219,19 @@ describe("Expr - Conditional functions", () => {
246
219
  });
247
220
  });
248
221
 
249
- describe("ifNull - create COALESCE with 3+ arguments", () => {
222
+ describe("coalesce - create COALESCE with 3+ arguments", () => {
250
223
  const db = createTestDb();
251
224
  const def = db
252
225
  .user()
253
226
  .select((item) => ({
254
- firstValid: expr.ifNull(item.email, item.name, "Anonymous"),
227
+ firstValid: expr.coalesce(item.email, item.name, "Anonymous"),
255
228
  }))
256
229
  .getSelectQueryDef();
257
230
 
258
231
  it("Verify QueryDef", () => {
259
232
  expect(def.select).toMatchObject({
260
233
  firstValid: {
261
- type: "ifNull",
234
+ type: "coalesce",
262
235
  args: [
263
236
  { type: "column", path: ["T1", "email"] },
264
237
  { type: "column", path: ["T1", "name"] },
@@ -270,7 +243,7 @@ describe("Expr - Conditional functions", () => {
270
243
 
271
244
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
272
245
  const builder = createQueryBuilder(dialect);
273
- expect(builder.build(def)).toMatchSql(expected.ifNullMultiple[dialect]);
246
+ expect(builder.build(def)).toMatchSql(expected.coalesceMultiple[dialect]);
274
247
  });
275
248
  });
276
249
  });
@@ -41,15 +41,6 @@ describe("Expr - Date/Time functions", () => {
41
41
  }))
42
42
  .getSelectQueryDef();
43
43
 
44
- it("Verify QueryDef", () => {
45
- expect(def.select).toMatchObject({
46
- monthPart: {
47
- type: "month",
48
- arg: { type: "column", path: ["T1", "createdAt"] },
49
- },
50
- });
51
- });
52
-
53
44
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
54
45
  const builder = createQueryBuilder(dialect);
55
46
  expect(builder.build(def)).toMatchSql(expected.month[dialect]);
@@ -65,15 +56,6 @@ describe("Expr - Date/Time functions", () => {
65
56
  }))
66
57
  .getSelectQueryDef();
67
58
 
68
- it("Verify QueryDef", () => {
69
- expect(def.select).toMatchObject({
70
- dayPart: {
71
- type: "day",
72
- arg: { type: "column", path: ["T1", "createdAt"] },
73
- },
74
- });
75
- });
76
-
77
59
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
78
60
  const builder = createQueryBuilder(dialect);
79
61
  expect(builder.build(def)).toMatchSql(expected.day[dialect]);
@@ -89,15 +71,6 @@ describe("Expr - Date/Time functions", () => {
89
71
  }))
90
72
  .getSelectQueryDef();
91
73
 
92
- it("Verify QueryDef", () => {
93
- expect(def.select).toMatchObject({
94
- hourPart: {
95
- type: "hour",
96
- arg: { type: "column", path: ["T1", "createdAt"] },
97
- },
98
- });
99
- });
100
-
101
74
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
102
75
  const builder = createQueryBuilder(dialect);
103
76
  expect(builder.build(def)).toMatchSql(expected.hour[dialect]);
@@ -113,15 +86,6 @@ describe("Expr - Date/Time functions", () => {
113
86
  }))
114
87
  .getSelectQueryDef();
115
88
 
116
- it("Verify QueryDef", () => {
117
- expect(def.select).toMatchObject({
118
- minutePart: {
119
- type: "minute",
120
- arg: { type: "column", path: ["T1", "createdAt"] },
121
- },
122
- });
123
- });
124
-
125
89
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
126
90
  const builder = createQueryBuilder(dialect);
127
91
  expect(builder.build(def)).toMatchSql(expected.minute[dialect]);
@@ -137,15 +101,6 @@ describe("Expr - Date/Time functions", () => {
137
101
  }))
138
102
  .getSelectQueryDef();
139
103
 
140
- it("Verify QueryDef", () => {
141
- expect(def.select).toMatchObject({
142
- secondPart: {
143
- type: "second",
144
- arg: { type: "column", path: ["T1", "createdAt"] },
145
- },
146
- });
147
- });
148
-
149
104
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
150
105
  const builder = createQueryBuilder(dialect);
151
106
  expect(builder.build(def)).toMatchSql(expected.second[dialect]);
@@ -166,7 +121,7 @@ describe("Expr - Date/Time functions", () => {
166
121
  expect(def.select).toMatchObject({
167
122
  daysDiff: {
168
123
  type: "dateDiff",
169
- separator: "day",
124
+ unit: "day",
170
125
  from: { type: "column", path: ["T1", "createdAt"] },
171
126
  to: { type: "value", value: targetDate },
172
127
  },
@@ -189,17 +144,6 @@ describe("Expr - Date/Time functions", () => {
189
144
  }))
190
145
  .getSelectQueryDef();
191
146
 
192
- it("Verify QueryDef", () => {
193
- expect(def.select).toMatchObject({
194
- yearsDiff: {
195
- type: "dateDiff",
196
- separator: "year",
197
- from: { type: "column", path: ["T1", "createdAt"] },
198
- to: { type: "value", value: targetDate },
199
- },
200
- });
201
- });
202
-
203
147
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
204
148
  const builder = createQueryBuilder(dialect);
205
149
  expect(builder.build(def)).toMatchSql(expected.dateDiffYear[dialect]);
@@ -216,17 +160,6 @@ describe("Expr - Date/Time functions", () => {
216
160
  }))
217
161
  .getSelectQueryDef();
218
162
 
219
- it("Verify QueryDef", () => {
220
- expect(def.select).toMatchObject({
221
- monthsDiff: {
222
- type: "dateDiff",
223
- separator: "month",
224
- from: { type: "column", path: ["T1", "createdAt"] },
225
- to: { type: "value", value: targetDate },
226
- },
227
- });
228
- });
229
-
230
163
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
231
164
  const builder = createQueryBuilder(dialect);
232
165
  expect(builder.build(def)).toMatchSql(expected.dateDiffMonth[dialect]);
@@ -247,7 +180,7 @@ describe("Expr - Date/Time functions", () => {
247
180
  expect(def.select).toMatchObject({
248
181
  hoursDiff: {
249
182
  type: "dateDiff",
250
- separator: "hour",
183
+ unit: "hour",
251
184
  from: { type: "column", path: ["T1", "createdAt"] },
252
185
  to: { type: "value", value: targetDate },
253
186
  },
@@ -274,7 +207,7 @@ describe("Expr - Date/Time functions", () => {
274
207
  expect(def.select).toMatchObject({
275
208
  minutesDiff: {
276
209
  type: "dateDiff",
277
- separator: "minute",
210
+ unit: "minute",
278
211
  from: { type: "column", path: ["T1", "createdAt"] },
279
212
  to: { type: "value", value: targetDate },
280
213
  },
@@ -301,7 +234,7 @@ describe("Expr - Date/Time functions", () => {
301
234
  expect(def.select).toMatchObject({
302
235
  secondsDiff: {
303
236
  type: "dateDiff",
304
- separator: "second",
237
+ unit: "second",
305
238
  from: { type: "column", path: ["T1", "createdAt"] },
306
239
  to: { type: "value", value: targetDate },
307
240
  },
@@ -327,7 +260,7 @@ describe("Expr - Date/Time functions", () => {
327
260
  expect(def.select).toMatchObject({
328
261
  nextMonth: {
329
262
  type: "dateAdd",
330
- separator: "month",
263
+ unit: "month",
331
264
  source: { type: "column", path: ["T1", "createdAt"] },
332
265
  value: { type: "value", value: 1 },
333
266
  },
@@ -56,51 +56,4 @@ describe("Expr - Math functions", () => {
56
56
  });
57
57
  });
58
58
 
59
- describe("ceil - ceiling", () => {
60
- const db = createTestDb();
61
- const def = db
62
- .user()
63
- .select((item) => ({
64
- ceiled: expr.ceil(item.age),
65
- }))
66
- .getSelectQueryDef();
67
-
68
- it("Verify QueryDef", () => {
69
- expect(def.select).toMatchObject({
70
- ceiled: {
71
- type: "ceil",
72
- arg: { type: "column", path: ["T1", "age"] },
73
- },
74
- });
75
- });
76
-
77
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
78
- const builder = createQueryBuilder(dialect);
79
- expect(builder.build(def)).toMatchSql(expected.ceil[dialect]);
80
- });
81
- });
82
-
83
- describe("floor - flooring", () => {
84
- const db = createTestDb();
85
- const def = db
86
- .user()
87
- .select((item) => ({
88
- floored: expr.floor(item.age),
89
- }))
90
- .getSelectQueryDef();
91
-
92
- it("Verify QueryDef", () => {
93
- expect(def.select).toMatchObject({
94
- floored: {
95
- type: "floor",
96
- arg: { type: "column", path: ["T1", "age"] },
97
- },
98
- });
99
- });
100
-
101
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
102
- const builder = createQueryBuilder(dialect);
103
- expect(builder.build(def)).toMatchSql(expected.floor[dialect]);
104
- });
105
- });
106
59
  });
@@ -68,15 +68,6 @@ describe("Expr - String functions", () => {
68
68
  }))
69
69
  .getSelectQueryDef();
70
70
 
71
- it("Verify QueryDef", () => {
72
- expect(def.select).toMatchObject({
73
- byteLen: {
74
- type: "byteLength",
75
- arg: { type: "column", path: ["T1", "name"] },
76
- },
77
- });
78
- });
79
-
80
71
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
81
72
  const builder = createQueryBuilder(dialect);
82
73
  expect(builder.build(def)).toMatchSql(expected.byteLength[dialect]);
@@ -117,16 +108,6 @@ describe("Expr - String functions", () => {
117
108
  }))
118
109
  .getSelectQueryDef();
119
110
 
120
- it("Verify QueryDef", () => {
121
- expect(def.select).toMatchObject({
122
- suffix: {
123
- type: "right",
124
- source: { type: "column", path: ["T1", "name"] },
125
- length: { type: "value", value: 3 },
126
- },
127
- });
128
- });
129
-
130
111
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
131
112
  const builder = createQueryBuilder(dialect);
132
113
  expect(builder.build(def)).toMatchSql(expected.right[dialect]);
@@ -142,15 +123,6 @@ describe("Expr - String functions", () => {
142
123
  }))
143
124
  .getSelectQueryDef();
144
125
 
145
- it("Verify QueryDef", () => {
146
- expect(def.select).toMatchObject({
147
- trimmed: {
148
- type: "trim",
149
- arg: { type: "column", path: ["T1", "name"] },
150
- },
151
- });
152
- });
153
-
154
126
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
155
127
  const builder = createQueryBuilder(dialect);
156
128
  expect(builder.build(def)).toMatchSql(expected.trim[dialect]);
@@ -218,15 +190,6 @@ describe("Expr - String functions", () => {
218
190
  }))
219
191
  .getSelectQueryDef();
220
192
 
221
- it("Verify QueryDef", () => {
222
- expect(def.select).toMatchObject({
223
- upper: {
224
- type: "upper",
225
- arg: { type: "column", path: ["T1", "name"] },
226
- },
227
- });
228
- });
229
-
230
193
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
231
194
  const builder = createQueryBuilder(dialect);
232
195
  expect(builder.build(def)).toMatchSql(expected.upper[dialect]);
@@ -242,15 +205,6 @@ describe("Expr - String functions", () => {
242
205
  }))
243
206
  .getSelectQueryDef();
244
207
 
245
- it("Verify QueryDef", () => {
246
- expect(def.select).toMatchObject({
247
- lower: {
248
- type: "lower",
249
- arg: { type: "column", path: ["T1", "name"] },
250
- },
251
- });
252
- });
253
-
254
208
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
255
209
  const builder = createQueryBuilder(dialect);
256
210
  expect(builder.build(def)).toMatchSql(expected.lower[dialect]);
@@ -338,16 +292,6 @@ describe("Expr - String functions", () => {
338
292
  .where((item) => [expr.like(item.name, "%\\%%")])
339
293
  .getSelectQueryDef();
340
294
 
341
- it("Verify QueryDef", () => {
342
- expect(def.where).toEqual([
343
- {
344
- type: "like",
345
- source: { type: "column", path: ["T1", "name"] },
346
- pattern: { type: "value", value: "%\\%%" },
347
- },
348
- ]);
349
- });
350
-
351
295
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
352
296
  const builder = createQueryBuilder(dialect);
353
297
  expect(builder.build(def)).toMatchSql(expected.likeEscape[dialect]);