@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
@@ -23,54 +23,6 @@ describe("DDL - Procedure Builder", () => {
23
23
  });
24
24
  });
25
25
 
26
- describe("description specified", () => {
27
- const proc = Procedure("TestProc").description("Test procedure");
28
-
29
- it("should validate metadata", () => {
30
- expect(proc.meta).toEqual({
31
- name: "TestProc",
32
- description: "Test procedure",
33
- database: undefined,
34
- schema: undefined,
35
- params: undefined,
36
- returns: undefined,
37
- query: undefined,
38
- });
39
- });
40
- });
41
-
42
- describe("database specified", () => {
43
- const proc = Procedure("TestProc").database("CustomDb");
44
-
45
- it("should validate metadata", () => {
46
- expect(proc.meta).toEqual({
47
- name: "TestProc",
48
- description: undefined,
49
- database: "CustomDb",
50
- schema: undefined,
51
- params: undefined,
52
- returns: undefined,
53
- query: undefined,
54
- });
55
- });
56
- });
57
-
58
- describe("schema specified", () => {
59
- const proc = Procedure("TestProc").schema("CustomSchema");
60
-
61
- it("should validate metadata", () => {
62
- expect(proc.meta).toEqual({
63
- name: "TestProc",
64
- description: undefined,
65
- database: undefined,
66
- schema: "CustomSchema",
67
- params: undefined,
68
- returns: undefined,
69
- query: undefined,
70
- });
71
- });
72
- });
73
-
74
26
  describe("params specified (single parameter)", () => {
75
27
  const proc = Procedure("TestProc").params((c) => ({ id: c.bigint() }));
76
28
 
@@ -82,23 +34,6 @@ describe("DDL - Procedure Builder", () => {
82
34
  });
83
35
  });
84
36
 
85
- describe("params specified (multiple parameters)", () => {
86
- const proc = Procedure("TestProc").params((c) => ({
87
- id: c.bigint(),
88
- name: c.varchar(100),
89
- isActive: c.boolean(),
90
- }));
91
-
92
- it("should validate metadata", () => {
93
- expect(proc.meta.name).toBe("TestProc");
94
- expect(proc.meta.params).toBeDefined();
95
- expect(Object.keys(proc.meta.params!)).toEqual(["id", "name", "isActive"]);
96
- expect(proc.meta.params!.id.meta.dataType).toEqual({ type: "bigint" });
97
- expect(proc.meta.params!.name.meta.dataType).toEqual({ type: "varchar", length: 100 });
98
- expect(proc.meta.params!.isActive.meta.dataType).toEqual({ type: "boolean" });
99
- });
100
- });
101
-
102
37
  describe("returns specified (single return)", () => {
103
38
  const proc = Procedure("TestProc").returns((c) => ({ id: c.bigint() }));
104
39
 
@@ -110,24 +45,6 @@ describe("DDL - Procedure Builder", () => {
110
45
  });
111
46
  });
112
47
 
113
- describe("returns specified (multiple returns)", () => {
114
- const proc = Procedure("TestProc").returns((c) => ({
115
- id: c.bigint(),
116
- name: c.varchar(100),
117
- email: c.varchar(200).nullable(),
118
- }));
119
-
120
- it("should validate metadata", () => {
121
- expect(proc.meta.name).toBe("TestProc");
122
- expect(proc.meta.returns).toBeDefined();
123
- expect(Object.keys(proc.meta.returns!)).toEqual(["id", "name", "email"]);
124
- expect(proc.meta.returns!.id.meta.dataType).toEqual({ type: "bigint" });
125
- expect(proc.meta.returns!.name.meta.dataType).toEqual({ type: "varchar", length: 100 });
126
- expect(proc.meta.returns!.email.meta.dataType).toEqual({ type: "varchar", length: 200 });
127
- expect(proc.meta.returns!.email.meta.nullable).toBe(true);
128
- });
129
- });
130
-
131
48
  describe("body specified + basic DDL generation", () => {
132
49
  const proc = Procedure("TestProc")
133
50
  .database("TestDb")
@@ -208,27 +125,4 @@ describe("DDL - Procedure Builder", () => {
208
125
  });
209
126
  });
210
127
 
211
- describe("method chaining order", () => {
212
- // Same result even with different method chaining order
213
- const proc1 = Procedure("TestProc")
214
- .params((c) => ({ id: c.bigint() }))
215
- .database("TestDb")
216
- .schema("TestSchema")
217
- .body("SELECT 1");
218
-
219
- const proc2 = Procedure("TestProc")
220
- .database("TestDb")
221
- .schema("TestSchema")
222
- .params((c) => ({ id: c.bigint() }))
223
- .body("SELECT 1");
224
-
225
- it("should validate metadata consistency", () => {
226
- // params is an object so deep comparison is needed
227
- expect(proc1.meta.name).toBe(proc2.meta.name);
228
- expect(proc1.meta.database).toBe(proc2.meta.database);
229
- expect(proc1.meta.schema).toBe(proc2.meta.schema);
230
- expect(proc1.meta.query).toBe(proc2.meta.query);
231
- expect(Object.keys(proc1.meta.params!)).toEqual(Object.keys(proc2.meta.params!));
232
- });
233
- });
234
128
  });
@@ -36,7 +36,7 @@ describe("DDL - Relation Builder", () => {
36
36
  const fkBuilder = RelationFactory.foreignKey(["userId"], () => User);
37
37
 
38
38
  const db = createTestDb();
39
- const def = db.getAddFkQueryDef(
39
+ const def = db.getAddForeignKeyQueryDef(
40
40
  { database: "TestDb", schema: "TestSchema", name: "Post" },
41
41
  "user",
42
42
  fkBuilder,
@@ -44,47 +44,7 @@ describe("DDL - Relation Builder", () => {
44
44
 
45
45
  it("should validate QueryDef", () => {
46
46
  expect(def).toEqual({
47
- type: "addFk",
48
- table: { database: "TestDb", schema: "TestSchema", name: "Post" },
49
- foreignKey: {
50
- name: "FK_Post_user",
51
- fkColumns: ["userId"],
52
- targetTable: { database: "TestDb", schema: "TestSchema", name: "User" },
53
- targetPkColumns: ["id"],
54
- },
55
- });
56
- });
57
-
58
- it.each(dialects)("[%s] should validate SQL", (dialect) => {
59
- const builder = createQueryBuilder(dialect);
60
- expect(builder.build(def)).toMatchSql(expected.basicForeignKey[dialect]);
61
- });
62
- });
63
-
64
- describe("ForeignKeyBuilder - description specified", () => {
65
- const Post = Table("Post")
66
- .database("TestDb")
67
- .schema("TestSchema")
68
- .columns((c) => ({
69
- id: c.bigint(),
70
- userId: c.bigint(),
71
- }))
72
- .primaryKey("id")
73
- .relations(() => ({}));
74
-
75
- const RelationFactory = createRelationFactory(() => Post);
76
- const fkBuilder = RelationFactory.foreignKey(["userId"], () => User).description("User relationship");
77
-
78
- const db = createTestDb();
79
- const def = db.getAddFkQueryDef(
80
- { database: "TestDb", schema: "TestSchema", name: "Post" },
81
- "user",
82
- fkBuilder,
83
- );
84
-
85
- it("should validate QueryDef", () => {
86
- expect(def).toEqual({
87
- type: "addFk",
47
+ type: "addForeignKey",
88
48
  table: { database: "TestDb", schema: "TestSchema", name: "Post" },
89
49
  foreignKey: {
90
50
  name: "FK_Post_user",
@@ -128,7 +88,7 @@ describe("DDL - Relation Builder", () => {
128
88
  const fkBuilder = RelationFactory.foreignKey(["companyId", "companyRegionId"], () => Company);
129
89
 
130
90
  const db = createTestDb();
131
- const def = db.getAddFkQueryDef(
91
+ const def = db.getAddForeignKeyQueryDef(
132
92
  { database: "TestDb", schema: "TestSchema", name: "Employee" },
133
93
  "company",
134
94
  fkBuilder,
@@ -136,7 +96,7 @@ describe("DDL - Relation Builder", () => {
136
96
 
137
97
  it("should validate QueryDef", () => {
138
98
  expect(def).toEqual({
139
- type: "addFk",
99
+ type: "addForeignKey",
140
100
  table: { database: "TestDb", schema: "TestSchema", name: "Employee" },
141
101
  foreignKey: {
142
102
  name: "FK_Employee_company",
@@ -207,166 +167,5 @@ describe("DDL - Relation Builder", () => {
207
167
  });
208
168
  });
209
169
 
210
- describe("ForeignKeyTargetBuilder - description specified", () => {
211
- const Post = Table("Post")
212
- .database("TestDb")
213
- .schema("TestSchema")
214
- .columns((c) => ({
215
- id: c.bigint(),
216
- userId: c.bigint(),
217
- }))
218
- .primaryKey("id")
219
- .relations(() => ({}));
220
-
221
- const RelationFactory = createRelationFactory(() => User);
222
- const targetBuilder = RelationFactory.foreignKeyTarget(() => Post, "posts").description(
223
- "List of posts by user",
224
- );
225
-
226
- it("should validate metadata", () => {
227
- expect(targetBuilder.meta).toEqual({
228
- targetTableFn: expect.any(Function),
229
- relationName: "posts",
230
- description: "List of posts by user",
231
- isSingle: undefined,
232
- });
233
- });
234
- });
235
-
236
- //#endregion
237
-
238
- //#region ========== RelationKeyBuilder ==========
239
-
240
- describe("RelationKeyBuilder - basic", () => {
241
- const Post = Table("Post")
242
- .database("TestDb")
243
- .schema("TestSchema")
244
- .columns((c) => ({
245
- id: c.bigint(),
246
- authorId: c.bigint(),
247
- }))
248
- .primaryKey("id")
249
- .relations(() => ({}));
250
-
251
- const RelationFactory = createRelationFactory(() => Post);
252
- const rkBuilder = RelationFactory.relationKey(["authorId"], () => User);
253
-
254
- // RelationKey does not register FK in DB so getAddFkQueryDef test is not possible
255
- // Only metadata validation
256
- it("should validate metadata", () => {
257
- expect(rkBuilder.meta).toEqual({
258
- ownerFn: expect.any(Function),
259
- columns: ["authorId"],
260
- targetFn: expect.any(Function),
261
- description: undefined,
262
- });
263
- });
264
- });
265
-
266
- describe("RelationKeyBuilder - description specified", () => {
267
- const Post = Table("Post")
268
- .database("TestDb")
269
- .schema("TestSchema")
270
- .columns((c) => ({
271
- id: c.bigint(),
272
- authorId: c.bigint(),
273
- }))
274
- .primaryKey("id")
275
- .relations(() => ({}));
276
-
277
- const RelationFactory = createRelationFactory(() => Post);
278
- const rkBuilder = RelationFactory.relationKey(["authorId"], () => User).description(
279
- "Author relationship (logical)",
280
- );
281
-
282
- it("should validate metadata", () => {
283
- expect(rkBuilder.meta).toEqual({
284
- ownerFn: expect.any(Function),
285
- columns: ["authorId"],
286
- targetFn: expect.any(Function),
287
- description: "Author relationship (logical)",
288
- });
289
- });
290
- });
291
-
292
- //#endregion
293
-
294
- //#region ========== RelationKeyTargetBuilder ==========
295
-
296
- describe("RelationKeyTargetBuilder - basic (array)", () => {
297
- const Post = Table("Post")
298
- .database("TestDb")
299
- .schema("TestSchema")
300
- .columns((c) => ({
301
- id: c.bigint(),
302
- authorId: c.bigint(),
303
- }))
304
- .primaryKey("id")
305
- .relations(() => ({}));
306
-
307
- const RelationFactory = createRelationFactory(() => User);
308
- const targetBuilder = RelationFactory.relationKeyTarget(() => Post, "authoredPosts");
309
-
310
- it("should validate metadata", () => {
311
- expect(targetBuilder.meta).toEqual({
312
- targetTableFn: expect.any(Function),
313
- relationName: "authoredPosts",
314
- description: undefined,
315
- isSingle: undefined,
316
- });
317
- });
318
- });
319
-
320
- describe("RelationKeyTargetBuilder - single() method", () => {
321
- const Post = Table("Post")
322
- .database("TestDb")
323
- .schema("TestSchema")
324
- .columns((c) => ({
325
- id: c.bigint(),
326
- authorId: c.bigint(),
327
- }))
328
- .primaryKey("id")
329
- .relations(() => ({}));
330
-
331
- const RelationFactory = createRelationFactory(() => User);
332
- const targetBuilder = RelationFactory.relationKeyTarget(() => Post, "featuredPost").single();
333
-
334
- it("should validate metadata", () => {
335
- expect(targetBuilder.meta).toEqual({
336
- targetTableFn: expect.any(Function),
337
- relationName: "featuredPost",
338
- description: undefined,
339
- isSingle: true,
340
- });
341
- });
342
- });
343
-
344
- describe("RelationKeyTargetBuilder - description specified", () => {
345
- const Post = Table("Post")
346
- .database("TestDb")
347
- .schema("TestSchema")
348
- .columns((c) => ({
349
- id: c.bigint(),
350
- authorId: c.bigint(),
351
- }))
352
- .primaryKey("id")
353
- .relations(() => ({}));
354
-
355
- const RelationFactory = createRelationFactory(() => User);
356
- const targetBuilder = RelationFactory.relationKeyTarget(
357
- () => Post,
358
- "authoredPosts",
359
- ).description("List of authored posts (logical)");
360
-
361
- it("should validate metadata", () => {
362
- expect(targetBuilder.meta).toEqual({
363
- targetTableFn: expect.any(Function),
364
- relationName: "authoredPosts",
365
- description: "List of authored posts (logical)",
366
- isSingle: undefined,
367
- });
368
- });
369
- });
370
-
371
170
  //#endregion
372
171
  });
@@ -24,23 +24,6 @@ describe("DDL - Table Builder", () => {
24
24
  });
25
25
  });
26
26
 
27
- describe("description specified", () => {
28
- const table = Table("User").description("User table");
29
-
30
- it("should validate metadata", () => {
31
- expect(table.meta).toEqual({
32
- name: "User",
33
- description: "User table",
34
- database: undefined,
35
- schema: undefined,
36
- columns: undefined,
37
- primaryKey: undefined,
38
- relations: undefined,
39
- indexes: undefined,
40
- });
41
- });
42
- });
43
-
44
27
  describe("database specified", () => {
45
28
  const table = Table("User").database("CustomDb");
46
29
 
@@ -58,23 +41,6 @@ describe("DDL - Table Builder", () => {
58
41
  });
59
42
  });
60
43
 
61
- describe("schema specified", () => {
62
- const table = Table("User").schema("CustomSchema");
63
-
64
- it("should validate metadata", () => {
65
- expect(table.meta).toEqual({
66
- name: "User",
67
- description: undefined,
68
- database: undefined,
69
- schema: "CustomSchema",
70
- columns: undefined,
71
- primaryKey: undefined,
72
- relations: undefined,
73
- indexes: undefined,
74
- });
75
- });
76
- });
77
-
78
44
  describe("columns specified (single column)", () => {
79
45
  const table = Table("User").columns((c) => ({ id: c.bigint() }));
80
46
 
@@ -7,66 +7,6 @@ import "../setup/test-utils"; // toMatchSql matcher
7
7
  import * as expected from "./view-builder.expected";
8
8
 
9
9
  describe("DDL - View Builder", () => {
10
- describe("basic view (name only)", () => {
11
- const view = View("TestView");
12
-
13
- it("should validate metadata", () => {
14
- expect(view.meta).toEqual({
15
- name: "TestView",
16
- description: undefined,
17
- database: undefined,
18
- schema: undefined,
19
- viewFn: undefined,
20
- relations: undefined,
21
- });
22
- });
23
- });
24
-
25
- describe("description specified", () => {
26
- const view = View("TestView").description("This is a test view");
27
-
28
- it("should validate metadata", () => {
29
- expect(view.meta).toEqual({
30
- name: "TestView",
31
- description: "This is a test view",
32
- database: undefined,
33
- schema: undefined,
34
- viewFn: undefined,
35
- relations: undefined,
36
- });
37
- });
38
- });
39
-
40
- describe("database specified", () => {
41
- const view = View("TestView").database("CustomDb");
42
-
43
- it("should validate metadata", () => {
44
- expect(view.meta).toEqual({
45
- name: "TestView",
46
- description: undefined,
47
- database: "CustomDb",
48
- schema: undefined,
49
- viewFn: undefined,
50
- relations: undefined,
51
- });
52
- });
53
- });
54
-
55
- describe("schema specified", () => {
56
- const view = View("TestView").schema("CustomSchema");
57
-
58
- it("should validate metadata", () => {
59
- expect(view.meta).toEqual({
60
- name: "TestView",
61
- description: undefined,
62
- database: undefined,
63
- schema: "CustomSchema",
64
- viewFn: undefined,
65
- relations: undefined,
66
- });
67
- });
68
- });
69
-
70
10
  describe("query specified (basic SELECT)", () => {
71
11
  const view = View("TestView").query((db: TestDbContext) =>
72
12
  db.user().select((u) => ({
@@ -60,39 +60,6 @@ describe("DELETE - Basic", () => {
60
60
  });
61
61
  });
62
62
 
63
- describe("DELETE with multiple conditions", () => {
64
- const db = createTestDb();
65
-
66
- const def = db
67
- .employee()
68
- .where((e) => [expr.eq(e.departmentId, 1), expr.null(e.managerId)])
69
- .getDeleteQueryDef();
70
-
71
- it("should validate QueryDef", () => {
72
- expect(def).toEqual({
73
- type: "delete",
74
- table: { database: "TestDb", schema: "TestSchema", name: "Employee" },
75
- as: "T1",
76
- where: [
77
- {
78
- type: "eq",
79
- source: { type: "column", path: ["T1", "departmentId"] },
80
- target: { type: "value", value: 1 },
81
- },
82
- {
83
- type: "null",
84
- arg: { type: "column", path: ["T1", "managerId"] },
85
- },
86
- ],
87
- });
88
- });
89
-
90
- it.each(dialects)("[%s] should validate SQL", (dialect) => {
91
- const builder = createQueryBuilder(dialect);
92
- expect(builder.build(def)).toMatchSql(expected.deleteMultiCond[dialect]);
93
- });
94
- });
95
-
96
63
  describe("output column specified", () => {
97
64
  const db = createTestDb();
98
65
 
@@ -161,44 +161,6 @@ describe("INSERT IF NOT EXISTS", () => {
161
161
  });
162
162
  });
163
163
 
164
- describe("Check duplicates with complex conditions", () => {
165
- const db = createTestDb();
166
- const def = db
167
- .employee()
168
- .where((e) => [expr.eq(e.name, "Gildong Hong"), expr.eq(e.departmentId, 1)])
169
- .getInsertIfNotExistsQueryDef({ name: "Gildong Hong", departmentId: 1 });
170
-
171
- it("Verify QueryDef", () => {
172
- expect(def).toEqual({
173
- type: "insertIfNotExists",
174
- table: { database: "TestDb", schema: "TestSchema", name: "Employee" },
175
- record: { name: "Gildong Hong", departmentId: 1 },
176
- existsSelectQuery: {
177
- type: "select",
178
- as: "T1",
179
- from: { database: "TestDb", schema: "TestSchema", name: "Employee" },
180
- where: [
181
- {
182
- type: "eq",
183
- source: { type: "column", path: ["T1", "name"] },
184
- target: { type: "value", value: "Gildong Hong" },
185
- },
186
- {
187
- type: "eq",
188
- source: { type: "column", path: ["T1", "departmentId"] },
189
- target: { type: "value", value: 1 },
190
- },
191
- ],
192
- },
193
- });
194
- });
195
-
196
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
197
- const builder = createQueryBuilder(dialect);
198
- expect(builder.build(def)).toMatchSql(expected.insertIfNotExistsMultiple[dialect]);
199
- });
200
- });
201
-
202
164
  //#endregion
203
165
  });
204
166
 
@@ -244,45 +206,5 @@ describe("INSERT INTO ... SELECT", () => {
244
206
  });
245
207
  });
246
208
 
247
- describe("INSERT INTO SELECT with WHERE condition", () => {
248
- const db = createTestDb();
249
- const def = db
250
- .employee()
251
- .where((e) => [expr.eq(e.departmentId, 1)])
252
- .select((e) => ({
253
- id: e.id,
254
- name: e.name,
255
- }))
256
- .getInsertIntoQueryDef(EmployeeBackup);
257
-
258
- it("Verify QueryDef", () => {
259
- expect(def).toEqual({
260
- type: "insertInto",
261
- table: { database: "TestDb", schema: "TestSchema", name: "EmployeeBackup" },
262
- recordsSelectQuery: {
263
- type: "select",
264
- as: "T1",
265
- from: { database: "TestDb", schema: "TestSchema", name: "Employee" },
266
- where: [
267
- {
268
- type: "eq",
269
- source: { type: "column", path: ["T1", "departmentId"] },
270
- target: { type: "value", value: 1 },
271
- },
272
- ],
273
- select: {
274
- id: { type: "column", path: ["T1", "id"] },
275
- name: { type: "column", path: ["T1", "name"] },
276
- },
277
- },
278
- });
279
- });
280
-
281
- it.each(dialects)("[%s] Verify SQL", (dialect) => {
282
- const builder = createQueryBuilder(dialect);
283
- expect(builder.build(def)).toMatchSql(expected.insertIntoSelectWhere[dialect]);
284
- });
285
- });
286
-
287
209
  //#endregion
288
210
  });