metal-orm 1.1.11 → 1.1.16
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 +758 -769
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +100 -96
- package/scripts/generate-entities/schema.mjs +122 -122
- package/scripts/generate-entities/tree-detection.mjs +92 -92
- package/scripts/inflection/pt-br.mjs +468 -468
- package/scripts/run-eslint.mjs +33 -34
- package/scripts/show-sql-seed.sql +102 -0
- package/scripts/show-sql.mjs +321 -325
- package/src/codegen/naming-strategy.ts +54 -54
- package/src/codegen/typescript.ts +482 -482
- package/src/core/ast/adapters.ts +1 -1
- package/src/core/ast/builders.ts +123 -123
- package/src/core/ast/expression-builders.ts +745 -745
- package/src/core/ast/expression-nodes.ts +304 -304
- package/src/core/ast/expression-visitor.ts +212 -212
- package/src/core/ast/expression.ts +20 -20
- package/src/core/ast/helpers.ts +14 -14
- package/src/core/ast/join.ts +18 -18
- package/src/core/ast/query.ts +200 -200
- package/src/core/ddl/dialects/base-schema-dialect.ts +1 -1
- package/src/core/ddl/dialects/mssql-schema-dialect.ts +1 -1
- package/src/core/ddl/dialects/mysql-schema-dialect.ts +1 -1
- package/src/core/ddl/dialects/postgres-schema-dialect.ts +1 -1
- package/src/core/ddl/dialects/render-reference.test.ts +70 -70
- package/src/core/ddl/dialects/sqlite-schema-dialect.ts +1 -1
- package/src/core/ddl/introspect/catalogs/index.ts +5 -5
- package/src/core/ddl/introspect/catalogs/postgres.ts +146 -146
- package/src/core/ddl/introspect/context.ts +15 -15
- package/src/core/ddl/introspect/functions/postgres.ts +35 -35
- package/src/core/ddl/introspect/registry.ts +40 -40
- package/src/core/ddl/introspect/run-select.ts +35 -35
- package/src/core/ddl/introspect/utils.ts +56 -56
- package/src/core/ddl/naming-strategy.ts +16 -16
- package/src/core/ddl/schema-dialect.ts +56 -56
- package/src/core/ddl/schema-diff.ts +234 -234
- package/src/core/ddl/schema-generator.ts +1 -1
- package/src/core/ddl/schema-introspect.ts +25 -25
- package/src/core/ddl/sql-writing.ts +171 -171
- package/src/core/dialect/abstract.ts +541 -541
- package/src/core/dialect/base/cte-compiler.ts +33 -33
- package/src/core/dialect/base/function-table-formatter.ts +103 -103
- package/src/core/dialect/base/groupby-compiler.ts +21 -21
- package/src/core/dialect/base/join-compiler.ts +25 -25
- package/src/core/dialect/base/orderby-compiler.ts +35 -35
- package/src/core/dialect/base/pagination-strategy.ts +32 -32
- package/src/core/dialect/base/returning-strategy.ts +57 -57
- package/src/core/dialect/base/sql-dialect.ts +294 -294
- package/src/core/dialect/dialect-factory.ts +91 -91
- package/src/core/dialect/mssql/functions.ts +120 -120
- package/src/core/dialect/mssql/index.ts +317 -317
- package/src/core/dialect/mysql/functions.ts +103 -103
- package/src/core/dialect/mysql/index.ts +105 -105
- package/src/core/dialect/postgres/functions.ts +108 -108
- package/src/core/dialect/postgres/index.ts +91 -91
- package/src/core/dialect/sqlite/functions.ts +129 -129
- package/src/core/dialect/sqlite/index.ts +67 -67
- package/src/core/driver/database-driver.ts +19 -19
- package/src/core/driver/mssql-driver.ts +23 -23
- package/src/core/driver/mysql-driver.ts +23 -23
- package/src/core/driver/postgres-driver.ts +23 -23
- package/src/core/driver/sqlite-driver.ts +23 -23
- package/src/core/execution/db-executor.ts +92 -92
- package/src/core/execution/executors/better-sqlite3-executor.ts +90 -90
- package/src/core/execution/executors/mssql-executor.ts +184 -184
- package/src/core/execution/executors/mysql-executor.ts +88 -88
- package/src/core/execution/executors/postgres-executor.ts +26 -26
- package/src/core/execution/executors/sqlite-executor.ts +42 -42
- package/src/core/execution/pooling/pool-types.ts +30 -30
- package/src/core/execution/pooling/pool.ts +275 -275
- package/src/core/functions/array.ts +35 -35
- package/src/core/functions/control-flow.ts +79 -79
- package/src/core/functions/datetime.ts +237 -237
- package/src/core/functions/json.ts +70 -70
- package/src/core/functions/numeric.ts +297 -297
- package/src/core/functions/text.ts +334 -334
- package/src/core/functions/types.ts +33 -33
- package/src/core/hydration/types.ts +51 -51
- package/src/core/sql/sql-operator-config.ts +39 -39
- package/src/core/sql/sql.ts +152 -152
- package/src/decorators/column-decorator.ts +87 -87
- package/src/decorators/decorator-metadata.ts +143 -143
- package/src/decorators/entity.ts +93 -93
- package/src/decorators/index.ts +39 -39
- package/src/decorators/relations.ts +231 -231
- package/src/decorators/transformers/built-in/string-transformers.ts +231 -231
- package/src/decorators/transformers/transformer-decorators.ts +134 -134
- package/src/decorators/transformers/transformer-executor.ts +171 -171
- package/src/decorators/transformers/transformer-metadata.ts +73 -73
- package/src/decorators/validators/built-in/br-cep-validator.ts +55 -55
- package/src/decorators/validators/built-in/br-cnpj-validator.ts +105 -105
- package/src/decorators/validators/built-in/br-cpf-validator.ts +103 -103
- package/src/decorators/validators/country-validator-registry.ts +64 -64
- package/src/decorators/validators/country-validators-decorators.ts +203 -203
- package/src/decorators/validators/country-validators.ts +105 -105
- package/src/decorators/validators/validator-metadata.ts +59 -59
- package/src/dto/dto-types.ts +226 -226
- package/src/dto/filter-types.ts +141 -141
- package/src/dto/index.ts +95 -95
- package/src/dto/openapi/generators/base.ts +29 -29
- package/src/dto/openapi/generators/column.ts +37 -37
- package/src/dto/openapi/generators/dto.ts +91 -91
- package/src/dto/openapi/generators/filter.ts +75 -75
- package/src/dto/openapi/generators/nested-dto.ts +618 -618
- package/src/dto/openapi/generators/pagination.ts +111 -111
- package/src/dto/openapi/generators/relation-filter.ts +228 -228
- package/src/dto/openapi/index.ts +12 -12
- package/src/dto/openapi/types.ts +101 -101
- package/src/dto/openapi/utilities.ts +95 -95
- package/src/dto/pagination-utils.ts +150 -150
- package/src/dto/transform.ts +197 -197
- package/src/index.ts +86 -86
- package/src/orm/als.ts +58 -58
- package/src/orm/domain-event-bus.ts +119 -119
- package/src/orm/entity-context.ts +86 -86
- package/src/orm/entity-materializer.ts +159 -159
- package/src/orm/entity-meta.ts +97 -97
- package/src/orm/entity-registry.ts +39 -39
- package/src/orm/entity-relation-cache.ts +39 -39
- package/src/orm/execute.ts +194 -194
- package/src/orm/execution-context.ts +18 -18
- package/src/orm/hydration-context.ts +26 -26
- package/src/orm/hydration.ts +112 -112
- package/src/orm/identity-map.ts +61 -61
- package/src/orm/interceptor-pipeline.ts +16 -16
- package/src/orm/lazy-batch/belongs-to-many.ts +119 -119
- package/src/orm/lazy-batch/belongs-to.ts +108 -108
- package/src/orm/lazy-batch/has-many.ts +69 -69
- package/src/orm/lazy-batch/has-one.ts +68 -68
- package/src/orm/lazy-batch/shared.ts +125 -125
- package/src/orm/orm-session.ts +620 -620
- package/src/orm/orm.ts +34 -34
- package/src/orm/pooled-executor-factory.ts +121 -121
- package/src/orm/query-logger.ts +40 -40
- package/src/orm/relation-change-processor.ts +420 -420
- package/src/orm/relations/belongs-to.ts +143 -143
- package/src/orm/relations/has-many.ts +204 -204
- package/src/orm/relations/has-one.ts +174 -174
- package/src/orm/relations/many-to-many.ts +288 -288
- package/src/orm/relations/morph-many.ts +156 -156
- package/src/orm/relations/morph-one.ts +151 -151
- package/src/orm/relations/morph-to.ts +162 -162
- package/src/orm/runtime-types.ts +92 -92
- package/src/orm/save-graph.ts +561 -561
- package/src/orm/transaction-runner.ts +24 -24
- package/src/orm/unit-of-work.ts +426 -426
- package/src/query/index.ts +69 -69
- package/src/query/target.ts +46 -46
- package/src/query-builder/column-selector.ts +81 -81
- package/src/query-builder/delete.ts +141 -141
- package/src/query-builder/insert-query-state.ts +149 -149
- package/src/query-builder/insert.ts +117 -117
- package/src/query-builder/query-ast-service.ts +287 -287
- package/src/query-builder/query-resolution.ts +78 -78
- package/src/query-builder/raw-column-parser.ts +38 -38
- package/src/query-builder/relation-filter-utils.ts +153 -153
- package/src/query-builder/relation-join-planner.ts +10 -10
- package/src/query-builder/relation-manager.ts +87 -87
- package/src/query-builder/relation-projection-helper.ts +102 -102
- package/src/query-builder/relation-types.ts +9 -9
- package/src/query-builder/relation-utils.ts +15 -15
- package/src/query-builder/select/cte-facet.ts +40 -40
- package/src/query-builder/select/from-facet.ts +80 -80
- package/src/query-builder/select/join-facet.ts +62 -62
- package/src/query-builder/select/predicate-facet.ts +104 -104
- package/src/query-builder/select/projection-facet.ts +70 -70
- package/src/query-builder/select/relation-facet.ts +81 -81
- package/src/query-builder/select/setop-facet.ts +36 -36
- package/src/query-builder/select-helpers.ts +1 -1
- package/src/query-builder/select-query-builder-deps.ts +130 -130
- package/src/query-builder/select-query-state.ts +207 -207
- package/src/query-builder/update.ts +151 -151
- package/src/schema/column-types.ts +322 -322
- package/src/schema/table-guards.ts +37 -37
- package/src/schema/table.ts +281 -281
- package/src/tree/index.ts +13 -13
- package/src/tree/nested-set-strategy.ts +545 -545
- package/src/tree/tree-decorator.ts +397 -397
- package/src/tree/tree-manager.ts +754 -754
- package/src/tree/tree-query.ts +427 -427
- package/src/tree/tree-types.ts +299 -299
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
// Pure AST Builders - No Dialect Logic Here!
|
|
2
|
-
|
|
3
|
-
import { ColumnDef } from '../../schema/column-types.js';
|
|
4
|
-
import { columnOperand, valueToOperand } from '../ast/expression-builders.js';
|
|
5
|
-
import { FunctionNode, OperandNode, isOperandNode, TypedExpression, asType } from '../ast/expression.js';
|
|
6
|
-
|
|
7
|
-
type OperandInput = OperandNode | ColumnDef | string | number | boolean | null;
|
|
8
|
-
|
|
9
|
-
const isColumnDef = (val: unknown): val is ColumnDef => !!val && typeof val === 'object' && 'type' in val && 'name' in val;
|
|
10
|
-
|
|
11
|
-
const toOperand = (input: OperandInput): OperandNode => {
|
|
12
|
-
if (isOperandNode(input)) return input;
|
|
13
|
-
if (isColumnDef(input)) return columnOperand(input);
|
|
14
|
-
|
|
15
|
-
return valueToOperand(input);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const fn = (key: string, args: OperandInput[]): FunctionNode => ({
|
|
19
|
-
type: 'Function',
|
|
20
|
-
name: key,
|
|
21
|
-
fn: key,
|
|
22
|
-
args: args.map(toOperand)
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
const nfn = (key: string, args: OperandInput[]): TypedExpression<number> => asType<number>(fn(key, args));
|
|
26
|
-
const afn = <T = unknown>(key: string, args: OperandInput[]): TypedExpression<T> => asType<T>(fn(key, args));
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Returns the number of elements in a JSON array or object.
|
|
30
|
-
*
|
|
31
|
-
* @param target - JSON column or value.
|
|
32
|
-
* @param path - Optional JSON path.
|
|
33
|
-
* @returns A `TypedExpression<number>` representing the `JSON_LENGTH` SQL function.
|
|
34
|
-
*/
|
|
35
|
-
export const jsonLength = (target: OperandInput, path?: OperandInput): TypedExpression<number> =>
|
|
36
|
-
path === undefined ? nfn('JSON_LENGTH', [target]) : nfn('JSON_LENGTH', [target, path]);
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Inserts or updates a value in a JSON document.
|
|
40
|
-
*
|
|
41
|
-
* @param target - JSON column or value.
|
|
42
|
-
* @param path - JSON path to set.
|
|
43
|
-
* @param value - Value to set.
|
|
44
|
-
* @returns A `TypedExpression<T>` representing the `JSON_SET` SQL function.
|
|
45
|
-
*/
|
|
46
|
-
export const jsonSet = <T = unknown>(target: OperandInput, path: OperandInput, value: OperandInput): TypedExpression<T> =>
|
|
47
|
-
afn<T>('JSON_SET', [target, path, value]);
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Aggregates values into a JSON array.
|
|
51
|
-
*
|
|
52
|
-
* @param value - Column or expression to aggregate.
|
|
53
|
-
* @returns A `TypedExpression<unknown[]>` representing the `JSON_ARRAYAGG` SQL function.
|
|
54
|
-
*/
|
|
55
|
-
export const jsonArrayAgg = (value: OperandInput): TypedExpression<unknown[]> => afn<unknown[]>('JSON_ARRAYAGG', [value]);
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Checks if a JSON document contains a specific piece of data.
|
|
59
|
-
*
|
|
60
|
-
* @param target - JSON column or value.
|
|
61
|
-
* @param candidate - Data to look for.
|
|
62
|
-
* @param path - Optional JSON path to search within.
|
|
63
|
-
* @returns A `TypedExpression<boolean>` representing the `JSON_CONTAINS` SQL function.
|
|
64
|
-
*/
|
|
65
|
-
export const jsonContains = (
|
|
66
|
-
target: OperandInput,
|
|
67
|
-
candidate: OperandInput,
|
|
68
|
-
path?: OperandInput
|
|
69
|
-
): TypedExpression<boolean> =>
|
|
70
|
-
path === undefined ? afn<boolean>('JSON_CONTAINS', [target, candidate]) : afn<boolean>('JSON_CONTAINS', [target, candidate, path]);
|
|
1
|
+
// Pure AST Builders - No Dialect Logic Here!
|
|
2
|
+
|
|
3
|
+
import { ColumnDef } from '../../schema/column-types.js';
|
|
4
|
+
import { columnOperand, valueToOperand } from '../ast/expression-builders.js';
|
|
5
|
+
import { FunctionNode, OperandNode, isOperandNode, TypedExpression, asType } from '../ast/expression.js';
|
|
6
|
+
|
|
7
|
+
type OperandInput = OperandNode | ColumnDef | string | number | boolean | null;
|
|
8
|
+
|
|
9
|
+
const isColumnDef = (val: unknown): val is ColumnDef => !!val && typeof val === 'object' && 'type' in val && 'name' in val;
|
|
10
|
+
|
|
11
|
+
const toOperand = (input: OperandInput): OperandNode => {
|
|
12
|
+
if (isOperandNode(input)) return input;
|
|
13
|
+
if (isColumnDef(input)) return columnOperand(input);
|
|
14
|
+
|
|
15
|
+
return valueToOperand(input);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const fn = (key: string, args: OperandInput[]): FunctionNode => ({
|
|
19
|
+
type: 'Function',
|
|
20
|
+
name: key,
|
|
21
|
+
fn: key,
|
|
22
|
+
args: args.map(toOperand)
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const nfn = (key: string, args: OperandInput[]): TypedExpression<number> => asType<number>(fn(key, args));
|
|
26
|
+
const afn = <T = unknown>(key: string, args: OperandInput[]): TypedExpression<T> => asType<T>(fn(key, args));
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Returns the number of elements in a JSON array or object.
|
|
30
|
+
*
|
|
31
|
+
* @param target - JSON column or value.
|
|
32
|
+
* @param path - Optional JSON path.
|
|
33
|
+
* @returns A `TypedExpression<number>` representing the `JSON_LENGTH` SQL function.
|
|
34
|
+
*/
|
|
35
|
+
export const jsonLength = (target: OperandInput, path?: OperandInput): TypedExpression<number> =>
|
|
36
|
+
path === undefined ? nfn('JSON_LENGTH', [target]) : nfn('JSON_LENGTH', [target, path]);
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Inserts or updates a value in a JSON document.
|
|
40
|
+
*
|
|
41
|
+
* @param target - JSON column or value.
|
|
42
|
+
* @param path - JSON path to set.
|
|
43
|
+
* @param value - Value to set.
|
|
44
|
+
* @returns A `TypedExpression<T>` representing the `JSON_SET` SQL function.
|
|
45
|
+
*/
|
|
46
|
+
export const jsonSet = <T = unknown>(target: OperandInput, path: OperandInput, value: OperandInput): TypedExpression<T> =>
|
|
47
|
+
afn<T>('JSON_SET', [target, path, value]);
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Aggregates values into a JSON array.
|
|
51
|
+
*
|
|
52
|
+
* @param value - Column or expression to aggregate.
|
|
53
|
+
* @returns A `TypedExpression<unknown[]>` representing the `JSON_ARRAYAGG` SQL function.
|
|
54
|
+
*/
|
|
55
|
+
export const jsonArrayAgg = (value: OperandInput): TypedExpression<unknown[]> => afn<unknown[]>('JSON_ARRAYAGG', [value]);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Checks if a JSON document contains a specific piece of data.
|
|
59
|
+
*
|
|
60
|
+
* @param target - JSON column or value.
|
|
61
|
+
* @param candidate - Data to look for.
|
|
62
|
+
* @param path - Optional JSON path to search within.
|
|
63
|
+
* @returns A `TypedExpression<boolean>` representing the `JSON_CONTAINS` SQL function.
|
|
64
|
+
*/
|
|
65
|
+
export const jsonContains = (
|
|
66
|
+
target: OperandInput,
|
|
67
|
+
candidate: OperandInput,
|
|
68
|
+
path?: OperandInput
|
|
69
|
+
): TypedExpression<boolean> =>
|
|
70
|
+
path === undefined ? afn<boolean>('JSON_CONTAINS', [target, candidate]) : afn<boolean>('JSON_CONTAINS', [target, candidate, path]);
|