@simplysm/orm-common 13.0.76 → 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 (109) 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 -6
  100. package/tests/ddl/basic.expected.ts +8 -8
  101. package/tests/ddl/basic.spec.ts +24 -24
  102. package/tests/ddl/index-builder.spec.ts +10 -10
  103. package/tests/ddl/relation-builder.spec.ts +4 -4
  104. package/tests/dml/update.spec.ts +2 -2
  105. package/tests/expr/conditional.expected.ts +2 -2
  106. package/tests/expr/conditional.spec.ts +8 -8
  107. package/tests/expr/date.spec.ts +5 -5
  108. package/tests/select/basic.spec.ts +5 -5
  109. package/tests/utils/result-parser.spec.ts +4 -4
@@ -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,7 +44,7 @@ describe("DDL - Relation Builder", () => {
44
44
 
45
45
  it("should validate QueryDef", () => {
46
46
  expect(def).toEqual({
47
- type: "addFk",
47
+ type: "addForeignKey",
48
48
  table: { database: "TestDb", schema: "TestSchema", name: "Post" },
49
49
  foreignKey: {
50
50
  name: "FK_Post_user",
@@ -88,7 +88,7 @@ describe("DDL - Relation Builder", () => {
88
88
  const fkBuilder = RelationFactory.foreignKey(["companyId", "companyRegionId"], () => Company);
89
89
 
90
90
  const db = createTestDb();
91
- const def = db.getAddFkQueryDef(
91
+ const def = db.getAddForeignKeyQueryDef(
92
92
  { database: "TestDb", schema: "TestSchema", name: "Employee" },
93
93
  "company",
94
94
  fkBuilder,
@@ -96,7 +96,7 @@ describe("DDL - Relation Builder", () => {
96
96
 
97
97
  it("should validate QueryDef", () => {
98
98
  expect(def).toEqual({
99
- type: "addFk",
99
+ type: "addForeignKey",
100
100
  table: { database: "TestDb", schema: "TestSchema", name: "Employee" },
101
101
  foreignKey: {
102
102
  name: "FK_Employee_company",
@@ -202,14 +202,14 @@ describe("FK switch", () => {
202
202
 
203
203
  const def = db.getSwitchFkQueryDef(
204
204
  { database: "TestDb", schema: "TestSchema", name: "Employee" },
205
- "off",
205
+ false,
206
206
  );
207
207
 
208
208
  it("Verify QueryDef", () => {
209
209
  expect(def).toEqual({
210
210
  type: "switchFk",
211
211
  table: { database: "TestDb", schema: "TestSchema", name: "Employee" },
212
- switch: "off",
212
+ enabled: false,
213
213
  });
214
214
  });
215
215
 
@@ -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
 
@@ -219,19 +219,19 @@ describe("Expr - Conditional functions", () => {
219
219
  });
220
220
  });
221
221
 
222
- describe("ifNull - create COALESCE with 3+ arguments", () => {
222
+ describe("coalesce - create COALESCE with 3+ arguments", () => {
223
223
  const db = createTestDb();
224
224
  const def = db
225
225
  .user()
226
226
  .select((item) => ({
227
- firstValid: expr.ifNull(item.email, item.name, "Anonymous"),
227
+ firstValid: expr.coalesce(item.email, item.name, "Anonymous"),
228
228
  }))
229
229
  .getSelectQueryDef();
230
230
 
231
231
  it("Verify QueryDef", () => {
232
232
  expect(def.select).toMatchObject({
233
233
  firstValid: {
234
- type: "ifNull",
234
+ type: "coalesce",
235
235
  args: [
236
236
  { type: "column", path: ["T1", "email"] },
237
237
  { type: "column", path: ["T1", "name"] },
@@ -243,7 +243,7 @@ describe("Expr - Conditional functions", () => {
243
243
 
244
244
  it.each(dialects)("[%s] Verify SQL", (dialect) => {
245
245
  const builder = createQueryBuilder(dialect);
246
- expect(builder.build(def)).toMatchSql(expected.ifNullMultiple[dialect]);
246
+ expect(builder.build(def)).toMatchSql(expected.coalesceMultiple[dialect]);
247
247
  });
248
248
  });
249
249
  });
@@ -121,7 +121,7 @@ describe("Expr - Date/Time functions", () => {
121
121
  expect(def.select).toMatchObject({
122
122
  daysDiff: {
123
123
  type: "dateDiff",
124
- separator: "day",
124
+ unit: "day",
125
125
  from: { type: "column", path: ["T1", "createdAt"] },
126
126
  to: { type: "value", value: targetDate },
127
127
  },
@@ -180,7 +180,7 @@ describe("Expr - Date/Time functions", () => {
180
180
  expect(def.select).toMatchObject({
181
181
  hoursDiff: {
182
182
  type: "dateDiff",
183
- separator: "hour",
183
+ unit: "hour",
184
184
  from: { type: "column", path: ["T1", "createdAt"] },
185
185
  to: { type: "value", value: targetDate },
186
186
  },
@@ -207,7 +207,7 @@ describe("Expr - Date/Time functions", () => {
207
207
  expect(def.select).toMatchObject({
208
208
  minutesDiff: {
209
209
  type: "dateDiff",
210
- separator: "minute",
210
+ unit: "minute",
211
211
  from: { type: "column", path: ["T1", "createdAt"] },
212
212
  to: { type: "value", value: targetDate },
213
213
  },
@@ -234,7 +234,7 @@ describe("Expr - Date/Time functions", () => {
234
234
  expect(def.select).toMatchObject({
235
235
  secondsDiff: {
236
236
  type: "dateDiff",
237
- separator: "second",
237
+ unit: "second",
238
238
  from: { type: "column", path: ["T1", "createdAt"] },
239
239
  to: { type: "value", value: targetDate },
240
240
  },
@@ -260,7 +260,7 @@ describe("Expr - Date/Time functions", () => {
260
260
  expect(def.select).toMatchObject({
261
261
  nextMonth: {
262
262
  type: "dateAdd",
263
- separator: "month",
263
+ unit: "month",
264
264
  source: { type: "column", path: ["T1", "createdAt"] },
265
265
  value: { type: "value", value: 1 },
266
266
  },
@@ -119,12 +119,12 @@ describe("SELECT - Basic", () => {
119
119
  });
120
120
  });
121
121
 
122
- describe("ifNull (2 arguments)", () => {
122
+ describe("coalesce (2 arguments)", () => {
123
123
  const db = createTestDb();
124
124
  const def = db
125
125
  .user()
126
126
  .select((item) => ({
127
- email: expr.ifNull(item.email, "N/A"),
127
+ email: expr.coalesce(item.email, "N/A"),
128
128
  }))
129
129
  .getSelectQueryDef();
130
130
 
@@ -135,7 +135,7 @@ describe("SELECT - Basic", () => {
135
135
  from: { database: "TestDb", schema: "TestSchema", name: "User" },
136
136
  select: {
137
137
  email: {
138
- type: "ifNull",
138
+ type: "coalesce",
139
139
  args: [
140
140
  { type: "column", path: ["T1", "email"] },
141
141
  { type: "value", value: "N/A" },
@@ -151,12 +151,12 @@ describe("SELECT - Basic", () => {
151
151
  });
152
152
  });
153
153
 
154
- describe("ifNull (3 arguments, COALESCE)", () => {
154
+ describe("coalesce (3 arguments, COALESCE)", () => {
155
155
  const db = createTestDb();
156
156
  const def = db
157
157
  .user()
158
158
  .select((item) => ({
159
- contact: expr.ifNull(item.email, item.name, "N/A"),
159
+ contact: expr.coalesce(item.email, item.name, "N/A"),
160
160
  }))
161
161
  .getSelectQueryDef();
162
162
 
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { bytesFromHex, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
2
+ import { bytes, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
3
3
  import { parseQueryResult } from "../../src/utils/result-parser";
4
4
  import type { ResultMeta } from "../../src/types/db";
5
5
 
@@ -112,7 +112,7 @@ describe("result-parser", () => {
112
112
 
113
113
  it("Uuid conversion - Uint8Array", async () => {
114
114
  const uuidStr = "550e8400-e29b-41d4-a716-446655440000";
115
- const uuidBytes = bytesFromHex(uuidStr.replace(/-/g, ""));
115
+ const uuidBytes = bytes.fromHex(uuidStr.replace(/-/g, ""));
116
116
  const raw = [{ id: uuidBytes }];
117
117
  const meta: ResultMeta = {
118
118
  columns: { id: "Uuid" },
@@ -126,8 +126,8 @@ describe("result-parser", () => {
126
126
  });
127
127
 
128
128
  it("Bytes conversion - Uint8Array passthrough", async () => {
129
- const bytes = new Uint8Array([0x01, 0x02, 0x03]);
130
- const raw = [{ data: bytes }];
129
+ const rawBytes = new Uint8Array([0x01, 0x02, 0x03]);
130
+ const raw = [{ data: rawBytes }];
131
131
  const meta: ResultMeta = {
132
132
  columns: { data: "Bytes" },
133
133
  joins: {},