metal-orm 1.0.63 → 1.0.65
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.
- package/README.md +10 -8
- package/dist/index.cjs +130 -107
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +848 -457
- package/dist/index.d.ts +848 -457
- package/dist/index.js +130 -107
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/core/ast/aggregate-functions.ts +14 -5
- package/src/core/ast/expression-builders.ts +325 -111
- package/src/core/ast/window-functions.ts +62 -52
- package/src/core/functions/array.ts +12 -3
- package/src/core/functions/control-flow.ts +28 -18
- package/src/core/functions/datetime.ts +113 -84
- package/src/core/functions/json.ts +40 -8
- package/src/core/functions/numeric.ts +116 -79
- package/src/core/functions/text.ts +181 -114
- package/src/index.ts +2 -1
- package/src/orm/entity-context.ts +9 -7
- package/src/orm/entity-relations.ts +207 -207
- package/src/orm/entity.ts +124 -124
- package/src/orm/execute.ts +166 -166
- package/src/orm/identity-map.ts +1 -1
- package/src/orm/lazy-batch/shared.ts +1 -1
- package/src/orm/orm-session.ts +54 -54
- package/src/orm/relation-change-processor.ts +3 -3
- package/src/orm/relations/has-many.ts +1 -1
- package/src/orm/runtime-types.ts +5 -5
- package/src/orm/save-graph.ts +161 -161
- package/src/orm/unit-of-work.ts +58 -56
- package/src/query-builder/insert-query-state.ts +156 -155
- package/src/query-builder/insert.ts +5 -2
- package/src/query-builder/select.ts +112 -111
- package/src/schema/column-types.ts +14 -14
- package/src/schema/table.ts +39 -31
- package/src/schema/types.ts +54 -54
package/README.md
CHANGED
|
@@ -549,14 +549,16 @@ const [user] = await selectFromEntity(User)
|
|
|
549
549
|
.where(eq(U.id, 1))
|
|
550
550
|
.execute(session); // user is an actual instance of the User class!
|
|
551
551
|
|
|
552
|
-
// Use executePlain() if you want raw POJOs instead of class instances
|
|
553
|
-
const [rawUser] = await selectFromEntity(User).executePlain(session);
|
|
554
|
-
|
|
555
|
-
user.posts.add({ title: 'From decorators' });
|
|
556
|
-
await session.commit();
|
|
557
|
-
```
|
|
558
|
-
|
|
559
|
-
|
|
552
|
+
// Use executePlain() if you want raw POJOs instead of class instances
|
|
553
|
+
const [rawUser] = await selectFromEntity(User).executePlain(session);
|
|
554
|
+
|
|
555
|
+
user.posts.add({ title: 'From decorators' });
|
|
556
|
+
await session.commit();
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
Note: relation helpers like `add`/`attach` are only available on tracked entities returned by `execute(session)`. `executePlain()` returns POJOs without relation wrappers. Make sure the primary key (e.g. `id`) is selected so relation adds can link correctly.
|
|
560
|
+
|
|
561
|
+
Tip: to keep selections terse, use `select`, `include` (with `columns`), or the `sel`/`esel` helpers instead of spelling `table.columns.*` over and over. By default, `selectFromEntity` selects all columns if you don't specify any.
|
|
560
562
|
|
|
561
563
|
|
|
562
564
|
This level is nice when:
|
package/dist/index.cjs
CHANGED
|
@@ -721,12 +721,24 @@ var createBinaryExpression = (operator, left2, right2, escape) => {
|
|
|
721
721
|
}
|
|
722
722
|
return node;
|
|
723
723
|
};
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
724
|
+
function eq(left2, right2) {
|
|
725
|
+
return createBinaryExpression("=", left2, right2);
|
|
726
|
+
}
|
|
727
|
+
function neq(left2, right2) {
|
|
728
|
+
return createBinaryExpression("!=", left2, right2);
|
|
729
|
+
}
|
|
730
|
+
function gt(left2, right2) {
|
|
731
|
+
return createBinaryExpression(">", left2, right2);
|
|
732
|
+
}
|
|
733
|
+
function gte(left2, right2) {
|
|
734
|
+
return createBinaryExpression(">=", left2, right2);
|
|
735
|
+
}
|
|
736
|
+
function lt(left2, right2) {
|
|
737
|
+
return createBinaryExpression("<", left2, right2);
|
|
738
|
+
}
|
|
739
|
+
function lte(left2, right2) {
|
|
740
|
+
return createBinaryExpression("<=", left2, right2);
|
|
741
|
+
}
|
|
730
742
|
var like = (left2, pattern, escape) => createBinaryExpression("LIKE", left2, pattern, escape);
|
|
731
743
|
var notLike = (left2, pattern, escape) => createBinaryExpression("NOT LIKE", left2, pattern, escape);
|
|
732
744
|
var and = (...operands) => ({
|
|
@@ -836,7 +848,7 @@ var buildWindowFunction = (name, args = [], partitionBy, orderBy) => {
|
|
|
836
848
|
if (orderBy && orderBy.length) {
|
|
837
849
|
node.orderBy = orderBy;
|
|
838
850
|
}
|
|
839
|
-
return node;
|
|
851
|
+
return asType(node);
|
|
840
852
|
};
|
|
841
853
|
var rowNumber = () => buildWindowFunction("ROW_NUMBER");
|
|
842
854
|
var rank = () => buildWindowFunction("RANK");
|
|
@@ -940,7 +952,7 @@ var ORDER_DIRECTIONS = {
|
|
|
940
952
|
};
|
|
941
953
|
|
|
942
954
|
// src/core/ast/aggregate-functions.ts
|
|
943
|
-
var buildAggregate = (name) => (col2) => ({
|
|
955
|
+
var buildAggregate = (name) => (col2) => asType({
|
|
944
956
|
type: "Function",
|
|
945
957
|
name,
|
|
946
958
|
args: [columnOperand(col2)]
|
|
@@ -950,7 +962,7 @@ var sum = buildAggregate("SUM");
|
|
|
950
962
|
var avg = buildAggregate("AVG");
|
|
951
963
|
var min = buildAggregate("MIN");
|
|
952
964
|
var max = buildAggregate("MAX");
|
|
953
|
-
var countAll = () => ({
|
|
965
|
+
var countAll = () => asType({
|
|
954
966
|
type: "Function",
|
|
955
967
|
name: "COUNT",
|
|
956
968
|
args: []
|
|
@@ -960,7 +972,7 @@ var toOrderByNode = (order) => ({
|
|
|
960
972
|
term: columnOperand(order.column),
|
|
961
973
|
direction: order.direction ?? ORDER_DIRECTIONS.ASC
|
|
962
974
|
});
|
|
963
|
-
var groupConcat = (col2, options) => ({
|
|
975
|
+
var groupConcat = (col2, options) => asType({
|
|
964
976
|
type: "Function",
|
|
965
977
|
name: "GROUP_CONCAT",
|
|
966
978
|
args: [columnOperand(col2)],
|
|
@@ -9783,45 +9795,47 @@ var fn = (key, args) => ({
|
|
|
9783
9795
|
fn: key,
|
|
9784
9796
|
args: args.map(toOperand2)
|
|
9785
9797
|
});
|
|
9786
|
-
var
|
|
9787
|
-
var
|
|
9788
|
-
var
|
|
9798
|
+
var sfn = (key, args) => asType(fn(key, args));
|
|
9799
|
+
var nfn = (key, args) => asType(fn(key, args));
|
|
9800
|
+
var lower = (value) => sfn("LOWER", [value]);
|
|
9801
|
+
var upper = (value) => sfn("UPPER", [value]);
|
|
9802
|
+
var ascii = (value) => nfn("ASCII", [value]);
|
|
9789
9803
|
var char = (...codes) => {
|
|
9790
9804
|
if (codes.length === 0) throw new Error("char() expects at least 1 argument");
|
|
9791
|
-
return
|
|
9805
|
+
return sfn("CHAR", codes);
|
|
9792
9806
|
};
|
|
9793
|
-
var charLength = (value) =>
|
|
9794
|
-
var length = (value) =>
|
|
9795
|
-
var trim = (value, chars) => chars === void 0 ?
|
|
9796
|
-
var ltrim = (value) =>
|
|
9797
|
-
var rtrim = (value) =>
|
|
9807
|
+
var charLength = (value) => nfn("CHAR_LENGTH", [value]);
|
|
9808
|
+
var length = (value) => nfn("LENGTH", [value]);
|
|
9809
|
+
var trim = (value, chars) => chars === void 0 ? sfn("TRIM", [value]) : sfn("TRIM", [value, chars]);
|
|
9810
|
+
var ltrim = (value) => sfn("LTRIM", [value]);
|
|
9811
|
+
var rtrim = (value) => sfn("RTRIM", [value]);
|
|
9798
9812
|
var concat = (...args) => {
|
|
9799
9813
|
if (args.length < 2) throw new Error("concat() expects at least 2 arguments");
|
|
9800
|
-
return
|
|
9814
|
+
return sfn("CONCAT", args);
|
|
9801
9815
|
};
|
|
9802
9816
|
var concatWs = (separator, ...args) => {
|
|
9803
9817
|
if (args.length < 1) throw new Error("concatWs() expects at least 2 arguments including the separator");
|
|
9804
|
-
return
|
|
9805
|
-
};
|
|
9806
|
-
var substr = (value, start, length2) => length2 === void 0 ?
|
|
9807
|
-
var left = (value, len) =>
|
|
9808
|
-
var right = (value, len) =>
|
|
9809
|
-
var position = (substring, value) =>
|
|
9810
|
-
var instr = (value, substring) =>
|
|
9811
|
-
var locate = (substring, value, start) => start === void 0 ?
|
|
9812
|
-
var replace = (value, search, replacement) =>
|
|
9813
|
-
var repeat = (value, count2) =>
|
|
9814
|
-
var lpad = (value, len, pad) =>
|
|
9815
|
-
var rpad = (value, len, pad) =>
|
|
9816
|
-
var space = (count2) =>
|
|
9817
|
-
var reverse = (value) =>
|
|
9818
|
-
var initcap = (value) =>
|
|
9819
|
-
var md5 = (value) =>
|
|
9820
|
-
var sha1 = (value) =>
|
|
9821
|
-
var sha2 = (value, bits) =>
|
|
9822
|
-
var bitLength = (value) =>
|
|
9823
|
-
var octetLength = (value) =>
|
|
9824
|
-
var chr = (code) =>
|
|
9818
|
+
return sfn("CONCAT_WS", [separator, ...args]);
|
|
9819
|
+
};
|
|
9820
|
+
var substr = (value, start, length2) => length2 === void 0 ? sfn("SUBSTR", [value, start]) : sfn("SUBSTR", [value, start, length2]);
|
|
9821
|
+
var left = (value, len) => sfn("LEFT", [value, len]);
|
|
9822
|
+
var right = (value, len) => sfn("RIGHT", [value, len]);
|
|
9823
|
+
var position = (substring, value) => nfn("POSITION", [substring, value]);
|
|
9824
|
+
var instr = (value, substring) => nfn("INSTR", [value, substring]);
|
|
9825
|
+
var locate = (substring, value, start) => start === void 0 ? nfn("LOCATE", [substring, value]) : nfn("LOCATE", [substring, value, start]);
|
|
9826
|
+
var replace = (value, search, replacement) => sfn("REPLACE", [value, search, replacement]);
|
|
9827
|
+
var repeat = (value, count2) => sfn("REPEAT", [value, count2]);
|
|
9828
|
+
var lpad = (value, len, pad) => sfn("LPAD", [value, len, pad]);
|
|
9829
|
+
var rpad = (value, len, pad) => sfn("RPAD", [value, len, pad]);
|
|
9830
|
+
var space = (count2) => sfn("SPACE", [count2]);
|
|
9831
|
+
var reverse = (value) => sfn("REVERSE", [value]);
|
|
9832
|
+
var initcap = (value) => sfn("INITCAP", [value]);
|
|
9833
|
+
var md5 = (value) => sfn("MD5", [value]);
|
|
9834
|
+
var sha1 = (value) => sfn("SHA1", [value]);
|
|
9835
|
+
var sha2 = (value, bits) => sfn("SHA2", [value, bits]);
|
|
9836
|
+
var bitLength = (value) => nfn("BIT_LENGTH", [value]);
|
|
9837
|
+
var octetLength = (value) => nfn("OCTET_LENGTH", [value]);
|
|
9838
|
+
var chr = (code) => sfn("CHR", [code]);
|
|
9825
9839
|
|
|
9826
9840
|
// src/core/ddl/introspect/functions/mssql.ts
|
|
9827
9841
|
var isColumnReference = (value) => typeof value === "object" && value !== null && !("type" in value) && "name" in value && typeof value.name === "string";
|
|
@@ -10350,38 +10364,39 @@ var fn3 = (key, args) => ({
|
|
|
10350
10364
|
fn: key,
|
|
10351
10365
|
args: args.map(toOperand3)
|
|
10352
10366
|
});
|
|
10353
|
-
var
|
|
10354
|
-
var
|
|
10355
|
-
var
|
|
10356
|
-
var
|
|
10357
|
-
var
|
|
10358
|
-
var
|
|
10359
|
-
var
|
|
10360
|
-
var
|
|
10361
|
-
var
|
|
10362
|
-
var
|
|
10363
|
-
var
|
|
10364
|
-
var
|
|
10365
|
-
var
|
|
10366
|
-
var
|
|
10367
|
-
var
|
|
10368
|
-
var
|
|
10369
|
-
var
|
|
10370
|
-
var
|
|
10371
|
-
var
|
|
10372
|
-
var
|
|
10373
|
-
var
|
|
10374
|
-
var
|
|
10375
|
-
var
|
|
10376
|
-
var
|
|
10377
|
-
var
|
|
10378
|
-
var
|
|
10379
|
-
var
|
|
10380
|
-
var
|
|
10381
|
-
var
|
|
10382
|
-
var
|
|
10383
|
-
var
|
|
10384
|
-
var
|
|
10367
|
+
var nfn2 = (key, args) => asType(fn3(key, args));
|
|
10368
|
+
var abs = (value) => nfn2("ABS", [value]);
|
|
10369
|
+
var acos = (value) => nfn2("ACOS", [value]);
|
|
10370
|
+
var asin = (value) => nfn2("ASIN", [value]);
|
|
10371
|
+
var atan = (value) => nfn2("ATAN", [value]);
|
|
10372
|
+
var atan2 = (y, x) => nfn2("ATAN2", [y, x]);
|
|
10373
|
+
var ceil = (value) => nfn2("CEIL", [value]);
|
|
10374
|
+
var ceiling = (value) => nfn2("CEILING", [value]);
|
|
10375
|
+
var cos = (value) => nfn2("COS", [value]);
|
|
10376
|
+
var cot = (value) => nfn2("COT", [value]);
|
|
10377
|
+
var degrees = (value) => nfn2("DEGREES", [value]);
|
|
10378
|
+
var exp = (value) => nfn2("EXP", [value]);
|
|
10379
|
+
var floor = (value) => nfn2("FLOOR", [value]);
|
|
10380
|
+
var ln = (value) => nfn2("LN", [value]);
|
|
10381
|
+
var log = (value) => nfn2("LOG", [value]);
|
|
10382
|
+
var log10 = (value) => nfn2("LOG10", [value]);
|
|
10383
|
+
var logBase = (base, value) => nfn2("LOG_BASE", [base, value]);
|
|
10384
|
+
var mod = (x, y) => nfn2("MOD", [x, y]);
|
|
10385
|
+
var pi = () => nfn2("PI", []);
|
|
10386
|
+
var power = (x, y) => nfn2("POWER", [x, y]);
|
|
10387
|
+
var pow = (x, y) => nfn2("POW", [x, y]);
|
|
10388
|
+
var radians = (value) => nfn2("RADIANS", [value]);
|
|
10389
|
+
var random = () => nfn2("RANDOM", []);
|
|
10390
|
+
var rand = () => nfn2("RAND", []);
|
|
10391
|
+
var round = (value, decimals) => decimals === void 0 ? nfn2("ROUND", [value]) : nfn2("ROUND", [value, decimals]);
|
|
10392
|
+
var sign = (value) => nfn2("SIGN", [value]);
|
|
10393
|
+
var sin = (value) => nfn2("SIN", [value]);
|
|
10394
|
+
var sqrt = (value) => nfn2("SQRT", [value]);
|
|
10395
|
+
var tan = (value) => nfn2("TAN", [value]);
|
|
10396
|
+
var trunc = (value, decimals) => decimals === void 0 ? nfn2("TRUNC", [value]) : nfn2("TRUNC", [value, decimals]);
|
|
10397
|
+
var truncate = (value, decimals) => nfn2("TRUNCATE", [value, decimals]);
|
|
10398
|
+
var log2 = (value) => nfn2("LOG2", [value]);
|
|
10399
|
+
var cbrt = (value) => nfn2("CBRT", [value]);
|
|
10385
10400
|
|
|
10386
10401
|
// src/core/functions/datetime.ts
|
|
10387
10402
|
var isColumnDef3 = (val) => !!val && typeof val === "object" && "type" in val && "name" in val;
|
|
@@ -10396,31 +10411,34 @@ var fn4 = (key, args) => ({
|
|
|
10396
10411
|
fn: key,
|
|
10397
10412
|
args: args.map(toOperand4)
|
|
10398
10413
|
});
|
|
10399
|
-
var
|
|
10400
|
-
var
|
|
10401
|
-
var
|
|
10402
|
-
var
|
|
10403
|
-
var
|
|
10404
|
-
var
|
|
10405
|
-
var
|
|
10406
|
-
var
|
|
10407
|
-
var
|
|
10408
|
-
var
|
|
10409
|
-
var
|
|
10410
|
-
var
|
|
10411
|
-
var
|
|
10412
|
-
var
|
|
10413
|
-
var
|
|
10414
|
-
var
|
|
10415
|
-
var
|
|
10416
|
-
var
|
|
10417
|
-
var
|
|
10418
|
-
var
|
|
10419
|
-
var
|
|
10420
|
-
var
|
|
10421
|
-
var
|
|
10422
|
-
var
|
|
10423
|
-
var
|
|
10414
|
+
var dfn = (key, args) => asType(fn4(key, args));
|
|
10415
|
+
var nfn3 = (key, args) => asType(fn4(key, args));
|
|
10416
|
+
var sfn2 = (key, args) => asType(fn4(key, args));
|
|
10417
|
+
var now = () => dfn("NOW", []);
|
|
10418
|
+
var currentDate = () => dfn("CURRENT_DATE", []);
|
|
10419
|
+
var currentTime = () => dfn("CURRENT_TIME", []);
|
|
10420
|
+
var utcNow = () => dfn("UTC_NOW", []);
|
|
10421
|
+
var localTime = () => dfn("LOCALTIME", []);
|
|
10422
|
+
var localTimestamp = () => dfn("LOCALTIMESTAMP", []);
|
|
10423
|
+
var extract = (part, date) => nfn3("EXTRACT", [part, date]);
|
|
10424
|
+
var year = (date) => nfn3("YEAR", [date]);
|
|
10425
|
+
var month = (date) => nfn3("MONTH", [date]);
|
|
10426
|
+
var day = (date) => nfn3("DAY", [date]);
|
|
10427
|
+
var dateAdd = (date, interval, unit) => dfn("DATE_ADD", [date, interval, unit]);
|
|
10428
|
+
var dateSub = (date, interval, unit) => dfn("DATE_SUB", [date, interval, unit]);
|
|
10429
|
+
var dateDiff = (date1, date2) => nfn3("DATE_DIFF", [date1, date2]);
|
|
10430
|
+
var dateFormat = (date, format) => sfn2("DATE_FORMAT", [date, format]);
|
|
10431
|
+
var unixTimestamp = () => nfn3("UNIX_TIMESTAMP", []);
|
|
10432
|
+
var fromUnixTime = (timestamp) => dfn("FROM_UNIXTIME", [timestamp]);
|
|
10433
|
+
var endOfMonth = (date) => dfn("END_OF_MONTH", [date]);
|
|
10434
|
+
var dayOfWeek = (date) => nfn3("DAY_OF_WEEK", [date]);
|
|
10435
|
+
var weekOfYear = (date) => nfn3("WEEK_OF_YEAR", [date]);
|
|
10436
|
+
var dateTrunc = (part, date) => dfn("DATE_TRUNC", [part, date]);
|
|
10437
|
+
var age = (timestamp, baseTimestamp) => baseTimestamp === void 0 ? sfn2("AGE", [timestamp]) : sfn2("AGE", [timestamp, baseTimestamp]);
|
|
10438
|
+
var hour = (date) => nfn3("HOUR", [date]);
|
|
10439
|
+
var minute = (date) => nfn3("MINUTE", [date]);
|
|
10440
|
+
var second = (date) => nfn3("SECOND", [date]);
|
|
10441
|
+
var quarter = (date) => nfn3("QUARTER", [date]);
|
|
10424
10442
|
|
|
10425
10443
|
// src/core/functions/control-flow.ts
|
|
10426
10444
|
var isColumnDef4 = (val) => !!val && typeof val === "object" && "type" in val && "name" in val;
|
|
@@ -10435,18 +10453,19 @@ var fn5 = (key, args) => ({
|
|
|
10435
10453
|
fn: key,
|
|
10436
10454
|
args: args.map(toOperand5)
|
|
10437
10455
|
});
|
|
10456
|
+
var afn = (key, args) => asType(fn5(key, args));
|
|
10438
10457
|
var coalesce = (...args) => {
|
|
10439
10458
|
if (args.length < 2) throw new Error("coalesce() expects at least 2 arguments");
|
|
10440
|
-
return
|
|
10459
|
+
return afn("COALESCE", args);
|
|
10441
10460
|
};
|
|
10442
|
-
var nullif = (val1, val2) =>
|
|
10461
|
+
var nullif = (val1, val2) => afn("NULLIF", [val1, val2]);
|
|
10443
10462
|
var greatest = (...args) => {
|
|
10444
10463
|
if (args.length < 2) throw new Error("greatest() expects at least 2 arguments");
|
|
10445
|
-
return
|
|
10464
|
+
return afn("GREATEST", args);
|
|
10446
10465
|
};
|
|
10447
10466
|
var least = (...args) => {
|
|
10448
10467
|
if (args.length < 2) throw new Error("least() expects at least 2 arguments");
|
|
10449
|
-
return
|
|
10468
|
+
return afn("LEAST", args);
|
|
10450
10469
|
};
|
|
10451
10470
|
var ifNull = (val, defaultValue) => coalesce(val, defaultValue);
|
|
10452
10471
|
|
|
@@ -10463,10 +10482,12 @@ var fn6 = (key, args) => ({
|
|
|
10463
10482
|
fn: key,
|
|
10464
10483
|
args: args.map(toOperand6)
|
|
10465
10484
|
});
|
|
10466
|
-
var
|
|
10467
|
-
var
|
|
10468
|
-
var
|
|
10469
|
-
var
|
|
10485
|
+
var nfn4 = (key, args) => asType(fn6(key, args));
|
|
10486
|
+
var afn2 = (key, args) => asType(fn6(key, args));
|
|
10487
|
+
var jsonLength = (target, path) => path === void 0 ? nfn4("JSON_LENGTH", [target]) : nfn4("JSON_LENGTH", [target, path]);
|
|
10488
|
+
var jsonSet = (target, path, value) => afn2("JSON_SET", [target, path, value]);
|
|
10489
|
+
var jsonArrayAgg = (value) => afn2("JSON_ARRAYAGG", [value]);
|
|
10490
|
+
var jsonContains = (target, candidate, path) => path === void 0 ? afn2("JSON_CONTAINS", [target, candidate]) : afn2("JSON_CONTAINS", [target, candidate, path]);
|
|
10470
10491
|
|
|
10471
10492
|
// src/core/functions/array.ts
|
|
10472
10493
|
var isColumnDef6 = (val) => !!val && typeof val === "object" && "type" in val && "name" in val;
|
|
@@ -10481,7 +10502,8 @@ var fn7 = (key, args) => ({
|
|
|
10481
10502
|
fn: key,
|
|
10482
10503
|
args: args.map(toOperand7)
|
|
10483
10504
|
});
|
|
10484
|
-
var
|
|
10505
|
+
var afn3 = (key, args) => asType(fn7(key, args));
|
|
10506
|
+
var arrayAppend = (array, value) => afn3("ARRAY_APPEND", [array, value]);
|
|
10485
10507
|
|
|
10486
10508
|
// src/orm/als.ts
|
|
10487
10509
|
var AsyncLocalStorage = class {
|
|
@@ -11377,6 +11399,7 @@ var UnitOfWork = class {
|
|
|
11377
11399
|
const key = findPrimaryKey(tracked.table);
|
|
11378
11400
|
const val = tracked.entity[key];
|
|
11379
11401
|
if (val === void 0 || val === null) return null;
|
|
11402
|
+
if (typeof val !== "string" && typeof val !== "number") return null;
|
|
11380
11403
|
return val;
|
|
11381
11404
|
}
|
|
11382
11405
|
};
|