You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.6 KiB
34 lines
1.6 KiB
"use strict"; |
|
function checkNamingCollision(association) { |
|
if (Object.prototype.hasOwnProperty.call(association.source.rawAttributes, association.as)) { |
|
throw new Error(`Naming collision between attribute '${association.as}' and association '${association.as}' on model ${association.source.name}. To remedy this, change either foreignKey or as in your association definition`); |
|
} |
|
} |
|
exports.checkNamingCollision = checkNamingCollision; |
|
function addForeignKeyConstraints(newAttribute, source, target, options, key) { |
|
if (options.foreignKeyConstraint || options.onDelete || options.onUpdate) { |
|
const primaryKeys = Object.keys(source.primaryKeys).map((primaryKeyAttribute) => source.rawAttributes[primaryKeyAttribute].field || primaryKeyAttribute); |
|
if (primaryKeys.length === 1 || !primaryKeys.includes(key)) { |
|
newAttribute.references = { |
|
model: source.getTableName(), |
|
key: key || primaryKeys[0] |
|
}; |
|
newAttribute.onDelete = options.onDelete; |
|
newAttribute.onUpdate = options.onUpdate; |
|
} |
|
} |
|
} |
|
exports.addForeignKeyConstraints = addForeignKeyConstraints; |
|
function mixinMethods(association, obj, methods, aliases) { |
|
aliases = aliases || {}; |
|
for (const method of methods) { |
|
if (!Object.prototype.hasOwnProperty.call(obj, association.accessors[method])) { |
|
const realMethod = aliases[method] || method; |
|
obj[association.accessors[method]] = function() { |
|
return association[realMethod](this, ...Array.from(arguments)); |
|
}; |
|
} |
|
} |
|
} |
|
exports.mixinMethods = mixinMethods; |
|
//# sourceMappingURL=helpers.js.map
|
|
|