metal-orm 1.0.29 → 1.0.32
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 +7 -7
- package/dist/decorators/index.cjs +4 -1
- package/dist/decorators/index.cjs.map +1 -1
- package/dist/decorators/index.js +4 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/index.cjs +108 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +108 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/core/execution/executors/mssql-executor.ts +0 -1
- package/src/decorators/bootstrap.ts +4 -1
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -4971,17 +4971,124 @@ var metadataMap = /* @__PURE__ */ new Map();
|
|
|
4971
4971
|
var getEntityMetadata = (target) => {
|
|
4972
4972
|
return metadataMap.get(target);
|
|
4973
4973
|
};
|
|
4974
|
+
var getAllEntityMetadata = () => {
|
|
4975
|
+
return Array.from(metadataMap.values());
|
|
4976
|
+
};
|
|
4977
|
+
var buildTableDef = (meta) => {
|
|
4978
|
+
if (meta.table) {
|
|
4979
|
+
return meta.table;
|
|
4980
|
+
}
|
|
4981
|
+
const columns = Object.entries(meta.columns).reduce((acc, [key, def]) => {
|
|
4982
|
+
acc[key] = {
|
|
4983
|
+
...def,
|
|
4984
|
+
name: key,
|
|
4985
|
+
table: meta.tableName
|
|
4986
|
+
};
|
|
4987
|
+
return acc;
|
|
4988
|
+
}, {});
|
|
4989
|
+
const table = defineTable(meta.tableName, columns, {}, meta.hooks);
|
|
4990
|
+
meta.table = table;
|
|
4991
|
+
return table;
|
|
4992
|
+
};
|
|
4974
4993
|
|
|
4975
4994
|
// src/decorators/bootstrap.ts
|
|
4995
|
+
var isTableDef = (value) => {
|
|
4996
|
+
return typeof value === "object" && value !== null && "columns" in value;
|
|
4997
|
+
};
|
|
4998
|
+
var unwrapTarget = (target) => {
|
|
4999
|
+
if (typeof target === "function" && target.prototype === void 0) {
|
|
5000
|
+
return target();
|
|
5001
|
+
}
|
|
5002
|
+
return target;
|
|
5003
|
+
};
|
|
5004
|
+
var resolveTableTarget = (target, tableMap) => {
|
|
5005
|
+
const resolved = unwrapTarget(target);
|
|
5006
|
+
if (isTableDef(resolved)) {
|
|
5007
|
+
return resolved;
|
|
5008
|
+
}
|
|
5009
|
+
const table = tableMap.get(resolved);
|
|
5010
|
+
if (!table) {
|
|
5011
|
+
throw new Error(`Entity '${resolved.name}' is not registered with decorators`);
|
|
5012
|
+
}
|
|
5013
|
+
return table;
|
|
5014
|
+
};
|
|
5015
|
+
var buildRelationDefinitions = (meta, tableMap) => {
|
|
5016
|
+
const relations = {};
|
|
5017
|
+
for (const [name, relation] of Object.entries(meta.relations)) {
|
|
5018
|
+
switch (relation.kind) {
|
|
5019
|
+
case RelationKinds.HasOne: {
|
|
5020
|
+
relations[name] = hasOne(
|
|
5021
|
+
resolveTableTarget(relation.target, tableMap),
|
|
5022
|
+
relation.foreignKey,
|
|
5023
|
+
relation.localKey,
|
|
5024
|
+
relation.cascade
|
|
5025
|
+
);
|
|
5026
|
+
break;
|
|
5027
|
+
}
|
|
5028
|
+
case RelationKinds.HasMany: {
|
|
5029
|
+
relations[name] = hasMany(
|
|
5030
|
+
resolveTableTarget(relation.target, tableMap),
|
|
5031
|
+
relation.foreignKey,
|
|
5032
|
+
relation.localKey,
|
|
5033
|
+
relation.cascade
|
|
5034
|
+
);
|
|
5035
|
+
break;
|
|
5036
|
+
}
|
|
5037
|
+
case RelationKinds.BelongsTo: {
|
|
5038
|
+
relations[name] = belongsTo(
|
|
5039
|
+
resolveTableTarget(relation.target, tableMap),
|
|
5040
|
+
relation.foreignKey,
|
|
5041
|
+
relation.localKey,
|
|
5042
|
+
relation.cascade
|
|
5043
|
+
);
|
|
5044
|
+
break;
|
|
5045
|
+
}
|
|
5046
|
+
case RelationKinds.BelongsToMany: {
|
|
5047
|
+
relations[name] = belongsToMany(
|
|
5048
|
+
resolveTableTarget(relation.target, tableMap),
|
|
5049
|
+
resolveTableTarget(relation.pivotTable, tableMap),
|
|
5050
|
+
{
|
|
5051
|
+
pivotForeignKeyToRoot: relation.pivotForeignKeyToRoot,
|
|
5052
|
+
pivotForeignKeyToTarget: relation.pivotForeignKeyToTarget,
|
|
5053
|
+
localKey: relation.localKey,
|
|
5054
|
+
targetKey: relation.targetKey,
|
|
5055
|
+
pivotPrimaryKey: relation.pivotPrimaryKey,
|
|
5056
|
+
defaultPivotColumns: relation.defaultPivotColumns,
|
|
5057
|
+
cascade: relation.cascade
|
|
5058
|
+
}
|
|
5059
|
+
);
|
|
5060
|
+
break;
|
|
5061
|
+
}
|
|
5062
|
+
}
|
|
5063
|
+
}
|
|
5064
|
+
return relations;
|
|
5065
|
+
};
|
|
5066
|
+
var bootstrapEntities = () => {
|
|
5067
|
+
const metas = getAllEntityMetadata();
|
|
5068
|
+
const tableMap = /* @__PURE__ */ new Map();
|
|
5069
|
+
for (const meta of metas) {
|
|
5070
|
+
const table = buildTableDef(meta);
|
|
5071
|
+
tableMap.set(meta.target, table);
|
|
5072
|
+
}
|
|
5073
|
+
for (const meta of metas) {
|
|
5074
|
+
const table = meta.table;
|
|
5075
|
+
const relations = buildRelationDefinitions(meta, tableMap);
|
|
5076
|
+
table.relations = relations;
|
|
5077
|
+
}
|
|
5078
|
+
return metas.map((meta) => meta.table);
|
|
5079
|
+
};
|
|
4976
5080
|
var getTableDefFromEntity = (ctor) => {
|
|
4977
5081
|
const meta = getEntityMetadata(ctor);
|
|
4978
5082
|
if (!meta) return void 0;
|
|
5083
|
+
if (!meta.table) {
|
|
5084
|
+
bootstrapEntities();
|
|
5085
|
+
}
|
|
4979
5086
|
return meta.table;
|
|
4980
5087
|
};
|
|
4981
5088
|
var selectFromEntity = (ctor) => {
|
|
4982
5089
|
const table = getTableDefFromEntity(ctor);
|
|
4983
5090
|
if (!table) {
|
|
4984
|
-
throw new Error(
|
|
5091
|
+
throw new Error(`Entity '${ctor.name}' is not registered with decorators or has not been bootstrapped`);
|
|
4985
5092
|
}
|
|
4986
5093
|
return new SelectQueryBuilder(table);
|
|
4987
5094
|
};
|