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/dist/index.js
CHANGED
|
@@ -446,12 +446,24 @@ var createBinaryExpression = (operator, left2, right2, escape) => {
|
|
|
446
446
|
}
|
|
447
447
|
return node;
|
|
448
448
|
};
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
449
|
+
function eq(left2, right2) {
|
|
450
|
+
return createBinaryExpression("=", left2, right2);
|
|
451
|
+
}
|
|
452
|
+
function neq(left2, right2) {
|
|
453
|
+
return createBinaryExpression("!=", left2, right2);
|
|
454
|
+
}
|
|
455
|
+
function gt(left2, right2) {
|
|
456
|
+
return createBinaryExpression(">", left2, right2);
|
|
457
|
+
}
|
|
458
|
+
function gte(left2, right2) {
|
|
459
|
+
return createBinaryExpression(">=", left2, right2);
|
|
460
|
+
}
|
|
461
|
+
function lt(left2, right2) {
|
|
462
|
+
return createBinaryExpression("<", left2, right2);
|
|
463
|
+
}
|
|
464
|
+
function lte(left2, right2) {
|
|
465
|
+
return createBinaryExpression("<=", left2, right2);
|
|
466
|
+
}
|
|
455
467
|
var like = (left2, pattern, escape) => createBinaryExpression("LIKE", left2, pattern, escape);
|
|
456
468
|
var notLike = (left2, pattern, escape) => createBinaryExpression("NOT LIKE", left2, pattern, escape);
|
|
457
469
|
var and = (...operands) => ({
|
|
@@ -561,7 +573,7 @@ var buildWindowFunction = (name, args = [], partitionBy, orderBy) => {
|
|
|
561
573
|
if (orderBy && orderBy.length) {
|
|
562
574
|
node.orderBy = orderBy;
|
|
563
575
|
}
|
|
564
|
-
return node;
|
|
576
|
+
return asType(node);
|
|
565
577
|
};
|
|
566
578
|
var rowNumber = () => buildWindowFunction("ROW_NUMBER");
|
|
567
579
|
var rank = () => buildWindowFunction("RANK");
|
|
@@ -665,7 +677,7 @@ var ORDER_DIRECTIONS = {
|
|
|
665
677
|
};
|
|
666
678
|
|
|
667
679
|
// src/core/ast/aggregate-functions.ts
|
|
668
|
-
var buildAggregate = (name) => (col2) => ({
|
|
680
|
+
var buildAggregate = (name) => (col2) => asType({
|
|
669
681
|
type: "Function",
|
|
670
682
|
name,
|
|
671
683
|
args: [columnOperand(col2)]
|
|
@@ -675,7 +687,7 @@ var sum = buildAggregate("SUM");
|
|
|
675
687
|
var avg = buildAggregate("AVG");
|
|
676
688
|
var min = buildAggregate("MIN");
|
|
677
689
|
var max = buildAggregate("MAX");
|
|
678
|
-
var countAll = () => ({
|
|
690
|
+
var countAll = () => asType({
|
|
679
691
|
type: "Function",
|
|
680
692
|
name: "COUNT",
|
|
681
693
|
args: []
|
|
@@ -685,7 +697,7 @@ var toOrderByNode = (order) => ({
|
|
|
685
697
|
term: columnOperand(order.column),
|
|
686
698
|
direction: order.direction ?? ORDER_DIRECTIONS.ASC
|
|
687
699
|
});
|
|
688
|
-
var groupConcat = (col2, options) => ({
|
|
700
|
+
var groupConcat = (col2, options) => asType({
|
|
689
701
|
type: "Function",
|
|
690
702
|
name: "GROUP_CONCAT",
|
|
691
703
|
args: [columnOperand(col2)],
|
|
@@ -9508,45 +9520,47 @@ var fn = (key, args) => ({
|
|
|
9508
9520
|
fn: key,
|
|
9509
9521
|
args: args.map(toOperand2)
|
|
9510
9522
|
});
|
|
9511
|
-
var
|
|
9512
|
-
var
|
|
9513
|
-
var
|
|
9523
|
+
var sfn = (key, args) => asType(fn(key, args));
|
|
9524
|
+
var nfn = (key, args) => asType(fn(key, args));
|
|
9525
|
+
var lower = (value) => sfn("LOWER", [value]);
|
|
9526
|
+
var upper = (value) => sfn("UPPER", [value]);
|
|
9527
|
+
var ascii = (value) => nfn("ASCII", [value]);
|
|
9514
9528
|
var char = (...codes) => {
|
|
9515
9529
|
if (codes.length === 0) throw new Error("char() expects at least 1 argument");
|
|
9516
|
-
return
|
|
9530
|
+
return sfn("CHAR", codes);
|
|
9517
9531
|
};
|
|
9518
|
-
var charLength = (value) =>
|
|
9519
|
-
var length = (value) =>
|
|
9520
|
-
var trim = (value, chars) => chars === void 0 ?
|
|
9521
|
-
var ltrim = (value) =>
|
|
9522
|
-
var rtrim = (value) =>
|
|
9532
|
+
var charLength = (value) => nfn("CHAR_LENGTH", [value]);
|
|
9533
|
+
var length = (value) => nfn("LENGTH", [value]);
|
|
9534
|
+
var trim = (value, chars) => chars === void 0 ? sfn("TRIM", [value]) : sfn("TRIM", [value, chars]);
|
|
9535
|
+
var ltrim = (value) => sfn("LTRIM", [value]);
|
|
9536
|
+
var rtrim = (value) => sfn("RTRIM", [value]);
|
|
9523
9537
|
var concat = (...args) => {
|
|
9524
9538
|
if (args.length < 2) throw new Error("concat() expects at least 2 arguments");
|
|
9525
|
-
return
|
|
9539
|
+
return sfn("CONCAT", args);
|
|
9526
9540
|
};
|
|
9527
9541
|
var concatWs = (separator, ...args) => {
|
|
9528
9542
|
if (args.length < 1) throw new Error("concatWs() expects at least 2 arguments including the separator");
|
|
9529
|
-
return
|
|
9530
|
-
};
|
|
9531
|
-
var substr = (value, start, length2) => length2 === void 0 ?
|
|
9532
|
-
var left = (value, len) =>
|
|
9533
|
-
var right = (value, len) =>
|
|
9534
|
-
var position = (substring, value) =>
|
|
9535
|
-
var instr = (value, substring) =>
|
|
9536
|
-
var locate = (substring, value, start) => start === void 0 ?
|
|
9537
|
-
var replace = (value, search, replacement) =>
|
|
9538
|
-
var repeat = (value, count2) =>
|
|
9539
|
-
var lpad = (value, len, pad) =>
|
|
9540
|
-
var rpad = (value, len, pad) =>
|
|
9541
|
-
var space = (count2) =>
|
|
9542
|
-
var reverse = (value) =>
|
|
9543
|
-
var initcap = (value) =>
|
|
9544
|
-
var md5 = (value) =>
|
|
9545
|
-
var sha1 = (value) =>
|
|
9546
|
-
var sha2 = (value, bits) =>
|
|
9547
|
-
var bitLength = (value) =>
|
|
9548
|
-
var octetLength = (value) =>
|
|
9549
|
-
var chr = (code) =>
|
|
9543
|
+
return sfn("CONCAT_WS", [separator, ...args]);
|
|
9544
|
+
};
|
|
9545
|
+
var substr = (value, start, length2) => length2 === void 0 ? sfn("SUBSTR", [value, start]) : sfn("SUBSTR", [value, start, length2]);
|
|
9546
|
+
var left = (value, len) => sfn("LEFT", [value, len]);
|
|
9547
|
+
var right = (value, len) => sfn("RIGHT", [value, len]);
|
|
9548
|
+
var position = (substring, value) => nfn("POSITION", [substring, value]);
|
|
9549
|
+
var instr = (value, substring) => nfn("INSTR", [value, substring]);
|
|
9550
|
+
var locate = (substring, value, start) => start === void 0 ? nfn("LOCATE", [substring, value]) : nfn("LOCATE", [substring, value, start]);
|
|
9551
|
+
var replace = (value, search, replacement) => sfn("REPLACE", [value, search, replacement]);
|
|
9552
|
+
var repeat = (value, count2) => sfn("REPEAT", [value, count2]);
|
|
9553
|
+
var lpad = (value, len, pad) => sfn("LPAD", [value, len, pad]);
|
|
9554
|
+
var rpad = (value, len, pad) => sfn("RPAD", [value, len, pad]);
|
|
9555
|
+
var space = (count2) => sfn("SPACE", [count2]);
|
|
9556
|
+
var reverse = (value) => sfn("REVERSE", [value]);
|
|
9557
|
+
var initcap = (value) => sfn("INITCAP", [value]);
|
|
9558
|
+
var md5 = (value) => sfn("MD5", [value]);
|
|
9559
|
+
var sha1 = (value) => sfn("SHA1", [value]);
|
|
9560
|
+
var sha2 = (value, bits) => sfn("SHA2", [value, bits]);
|
|
9561
|
+
var bitLength = (value) => nfn("BIT_LENGTH", [value]);
|
|
9562
|
+
var octetLength = (value) => nfn("OCTET_LENGTH", [value]);
|
|
9563
|
+
var chr = (code) => sfn("CHR", [code]);
|
|
9550
9564
|
|
|
9551
9565
|
// src/core/ddl/introspect/functions/mssql.ts
|
|
9552
9566
|
var isColumnReference = (value) => typeof value === "object" && value !== null && !("type" in value) && "name" in value && typeof value.name === "string";
|
|
@@ -10075,38 +10089,39 @@ var fn3 = (key, args) => ({
|
|
|
10075
10089
|
fn: key,
|
|
10076
10090
|
args: args.map(toOperand3)
|
|
10077
10091
|
});
|
|
10078
|
-
var
|
|
10079
|
-
var
|
|
10080
|
-
var
|
|
10081
|
-
var
|
|
10082
|
-
var
|
|
10083
|
-
var
|
|
10084
|
-
var
|
|
10085
|
-
var
|
|
10086
|
-
var
|
|
10087
|
-
var
|
|
10088
|
-
var
|
|
10089
|
-
var
|
|
10090
|
-
var
|
|
10091
|
-
var
|
|
10092
|
-
var
|
|
10093
|
-
var
|
|
10094
|
-
var
|
|
10095
|
-
var
|
|
10096
|
-
var
|
|
10097
|
-
var
|
|
10098
|
-
var
|
|
10099
|
-
var
|
|
10100
|
-
var
|
|
10101
|
-
var
|
|
10102
|
-
var
|
|
10103
|
-
var
|
|
10104
|
-
var
|
|
10105
|
-
var
|
|
10106
|
-
var
|
|
10107
|
-
var
|
|
10108
|
-
var
|
|
10109
|
-
var
|
|
10092
|
+
var nfn2 = (key, args) => asType(fn3(key, args));
|
|
10093
|
+
var abs = (value) => nfn2("ABS", [value]);
|
|
10094
|
+
var acos = (value) => nfn2("ACOS", [value]);
|
|
10095
|
+
var asin = (value) => nfn2("ASIN", [value]);
|
|
10096
|
+
var atan = (value) => nfn2("ATAN", [value]);
|
|
10097
|
+
var atan2 = (y, x) => nfn2("ATAN2", [y, x]);
|
|
10098
|
+
var ceil = (value) => nfn2("CEIL", [value]);
|
|
10099
|
+
var ceiling = (value) => nfn2("CEILING", [value]);
|
|
10100
|
+
var cos = (value) => nfn2("COS", [value]);
|
|
10101
|
+
var cot = (value) => nfn2("COT", [value]);
|
|
10102
|
+
var degrees = (value) => nfn2("DEGREES", [value]);
|
|
10103
|
+
var exp = (value) => nfn2("EXP", [value]);
|
|
10104
|
+
var floor = (value) => nfn2("FLOOR", [value]);
|
|
10105
|
+
var ln = (value) => nfn2("LN", [value]);
|
|
10106
|
+
var log = (value) => nfn2("LOG", [value]);
|
|
10107
|
+
var log10 = (value) => nfn2("LOG10", [value]);
|
|
10108
|
+
var logBase = (base, value) => nfn2("LOG_BASE", [base, value]);
|
|
10109
|
+
var mod = (x, y) => nfn2("MOD", [x, y]);
|
|
10110
|
+
var pi = () => nfn2("PI", []);
|
|
10111
|
+
var power = (x, y) => nfn2("POWER", [x, y]);
|
|
10112
|
+
var pow = (x, y) => nfn2("POW", [x, y]);
|
|
10113
|
+
var radians = (value) => nfn2("RADIANS", [value]);
|
|
10114
|
+
var random = () => nfn2("RANDOM", []);
|
|
10115
|
+
var rand = () => nfn2("RAND", []);
|
|
10116
|
+
var round = (value, decimals) => decimals === void 0 ? nfn2("ROUND", [value]) : nfn2("ROUND", [value, decimals]);
|
|
10117
|
+
var sign = (value) => nfn2("SIGN", [value]);
|
|
10118
|
+
var sin = (value) => nfn2("SIN", [value]);
|
|
10119
|
+
var sqrt = (value) => nfn2("SQRT", [value]);
|
|
10120
|
+
var tan = (value) => nfn2("TAN", [value]);
|
|
10121
|
+
var trunc = (value, decimals) => decimals === void 0 ? nfn2("TRUNC", [value]) : nfn2("TRUNC", [value, decimals]);
|
|
10122
|
+
var truncate = (value, decimals) => nfn2("TRUNCATE", [value, decimals]);
|
|
10123
|
+
var log2 = (value) => nfn2("LOG2", [value]);
|
|
10124
|
+
var cbrt = (value) => nfn2("CBRT", [value]);
|
|
10110
10125
|
|
|
10111
10126
|
// src/core/functions/datetime.ts
|
|
10112
10127
|
var isColumnDef3 = (val) => !!val && typeof val === "object" && "type" in val && "name" in val;
|
|
@@ -10121,31 +10136,34 @@ var fn4 = (key, args) => ({
|
|
|
10121
10136
|
fn: key,
|
|
10122
10137
|
args: args.map(toOperand4)
|
|
10123
10138
|
});
|
|
10124
|
-
var
|
|
10125
|
-
var
|
|
10126
|
-
var
|
|
10127
|
-
var
|
|
10128
|
-
var
|
|
10129
|
-
var
|
|
10130
|
-
var
|
|
10131
|
-
var
|
|
10132
|
-
var
|
|
10133
|
-
var
|
|
10134
|
-
var
|
|
10135
|
-
var
|
|
10136
|
-
var
|
|
10137
|
-
var
|
|
10138
|
-
var
|
|
10139
|
-
var
|
|
10140
|
-
var
|
|
10141
|
-
var
|
|
10142
|
-
var
|
|
10143
|
-
var
|
|
10144
|
-
var
|
|
10145
|
-
var
|
|
10146
|
-
var
|
|
10147
|
-
var
|
|
10148
|
-
var
|
|
10139
|
+
var dfn = (key, args) => asType(fn4(key, args));
|
|
10140
|
+
var nfn3 = (key, args) => asType(fn4(key, args));
|
|
10141
|
+
var sfn2 = (key, args) => asType(fn4(key, args));
|
|
10142
|
+
var now = () => dfn("NOW", []);
|
|
10143
|
+
var currentDate = () => dfn("CURRENT_DATE", []);
|
|
10144
|
+
var currentTime = () => dfn("CURRENT_TIME", []);
|
|
10145
|
+
var utcNow = () => dfn("UTC_NOW", []);
|
|
10146
|
+
var localTime = () => dfn("LOCALTIME", []);
|
|
10147
|
+
var localTimestamp = () => dfn("LOCALTIMESTAMP", []);
|
|
10148
|
+
var extract = (part, date) => nfn3("EXTRACT", [part, date]);
|
|
10149
|
+
var year = (date) => nfn3("YEAR", [date]);
|
|
10150
|
+
var month = (date) => nfn3("MONTH", [date]);
|
|
10151
|
+
var day = (date) => nfn3("DAY", [date]);
|
|
10152
|
+
var dateAdd = (date, interval, unit) => dfn("DATE_ADD", [date, interval, unit]);
|
|
10153
|
+
var dateSub = (date, interval, unit) => dfn("DATE_SUB", [date, interval, unit]);
|
|
10154
|
+
var dateDiff = (date1, date2) => nfn3("DATE_DIFF", [date1, date2]);
|
|
10155
|
+
var dateFormat = (date, format) => sfn2("DATE_FORMAT", [date, format]);
|
|
10156
|
+
var unixTimestamp = () => nfn3("UNIX_TIMESTAMP", []);
|
|
10157
|
+
var fromUnixTime = (timestamp) => dfn("FROM_UNIXTIME", [timestamp]);
|
|
10158
|
+
var endOfMonth = (date) => dfn("END_OF_MONTH", [date]);
|
|
10159
|
+
var dayOfWeek = (date) => nfn3("DAY_OF_WEEK", [date]);
|
|
10160
|
+
var weekOfYear = (date) => nfn3("WEEK_OF_YEAR", [date]);
|
|
10161
|
+
var dateTrunc = (part, date) => dfn("DATE_TRUNC", [part, date]);
|
|
10162
|
+
var age = (timestamp, baseTimestamp) => baseTimestamp === void 0 ? sfn2("AGE", [timestamp]) : sfn2("AGE", [timestamp, baseTimestamp]);
|
|
10163
|
+
var hour = (date) => nfn3("HOUR", [date]);
|
|
10164
|
+
var minute = (date) => nfn3("MINUTE", [date]);
|
|
10165
|
+
var second = (date) => nfn3("SECOND", [date]);
|
|
10166
|
+
var quarter = (date) => nfn3("QUARTER", [date]);
|
|
10149
10167
|
|
|
10150
10168
|
// src/core/functions/control-flow.ts
|
|
10151
10169
|
var isColumnDef4 = (val) => !!val && typeof val === "object" && "type" in val && "name" in val;
|
|
@@ -10160,18 +10178,19 @@ var fn5 = (key, args) => ({
|
|
|
10160
10178
|
fn: key,
|
|
10161
10179
|
args: args.map(toOperand5)
|
|
10162
10180
|
});
|
|
10181
|
+
var afn = (key, args) => asType(fn5(key, args));
|
|
10163
10182
|
var coalesce = (...args) => {
|
|
10164
10183
|
if (args.length < 2) throw new Error("coalesce() expects at least 2 arguments");
|
|
10165
|
-
return
|
|
10184
|
+
return afn("COALESCE", args);
|
|
10166
10185
|
};
|
|
10167
|
-
var nullif = (val1, val2) =>
|
|
10186
|
+
var nullif = (val1, val2) => afn("NULLIF", [val1, val2]);
|
|
10168
10187
|
var greatest = (...args) => {
|
|
10169
10188
|
if (args.length < 2) throw new Error("greatest() expects at least 2 arguments");
|
|
10170
|
-
return
|
|
10189
|
+
return afn("GREATEST", args);
|
|
10171
10190
|
};
|
|
10172
10191
|
var least = (...args) => {
|
|
10173
10192
|
if (args.length < 2) throw new Error("least() expects at least 2 arguments");
|
|
10174
|
-
return
|
|
10193
|
+
return afn("LEAST", args);
|
|
10175
10194
|
};
|
|
10176
10195
|
var ifNull = (val, defaultValue) => coalesce(val, defaultValue);
|
|
10177
10196
|
|
|
@@ -10188,10 +10207,12 @@ var fn6 = (key, args) => ({
|
|
|
10188
10207
|
fn: key,
|
|
10189
10208
|
args: args.map(toOperand6)
|
|
10190
10209
|
});
|
|
10191
|
-
var
|
|
10192
|
-
var
|
|
10193
|
-
var
|
|
10194
|
-
var
|
|
10210
|
+
var nfn4 = (key, args) => asType(fn6(key, args));
|
|
10211
|
+
var afn2 = (key, args) => asType(fn6(key, args));
|
|
10212
|
+
var jsonLength = (target, path) => path === void 0 ? nfn4("JSON_LENGTH", [target]) : nfn4("JSON_LENGTH", [target, path]);
|
|
10213
|
+
var jsonSet = (target, path, value) => afn2("JSON_SET", [target, path, value]);
|
|
10214
|
+
var jsonArrayAgg = (value) => afn2("JSON_ARRAYAGG", [value]);
|
|
10215
|
+
var jsonContains = (target, candidate, path) => path === void 0 ? afn2("JSON_CONTAINS", [target, candidate]) : afn2("JSON_CONTAINS", [target, candidate, path]);
|
|
10195
10216
|
|
|
10196
10217
|
// src/core/functions/array.ts
|
|
10197
10218
|
var isColumnDef6 = (val) => !!val && typeof val === "object" && "type" in val && "name" in val;
|
|
@@ -10206,7 +10227,8 @@ var fn7 = (key, args) => ({
|
|
|
10206
10227
|
fn: key,
|
|
10207
10228
|
args: args.map(toOperand7)
|
|
10208
10229
|
});
|
|
10209
|
-
var
|
|
10230
|
+
var afn3 = (key, args) => asType(fn7(key, args));
|
|
10231
|
+
var arrayAppend = (array, value) => afn3("ARRAY_APPEND", [array, value]);
|
|
10210
10232
|
|
|
10211
10233
|
// src/orm/als.ts
|
|
10212
10234
|
var AsyncLocalStorage = class {
|
|
@@ -11102,6 +11124,7 @@ var UnitOfWork = class {
|
|
|
11102
11124
|
const key = findPrimaryKey(tracked.table);
|
|
11103
11125
|
const val = tracked.entity[key];
|
|
11104
11126
|
if (val === void 0 || val === null) return null;
|
|
11127
|
+
if (typeof val !== "string" && typeof val !== "number") return null;
|
|
11105
11128
|
return val;
|
|
11106
11129
|
}
|
|
11107
11130
|
};
|