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.0 KiB
34 lines
1.0 KiB
2 years ago
|
"use strict";
|
||
|
const { AssociationError } = require("./../errors");
|
||
|
class Association {
|
||
|
constructor(source, target, options = {}) {
|
||
|
this.source = source;
|
||
|
this.target = target;
|
||
|
this.options = options;
|
||
|
this.scope = options.scope;
|
||
|
this.isSelfAssociation = this.source === this.target;
|
||
|
this.as = options.as;
|
||
|
this.associationType = "";
|
||
|
if (source.hasAlias(options.as)) {
|
||
|
throw new AssociationError(`You have used the alias ${options.as} in two separate associations. Aliased associations must have unique aliases.`);
|
||
|
}
|
||
|
}
|
||
|
toInstanceArray(input) {
|
||
|
if (!Array.isArray(input)) {
|
||
|
input = [input];
|
||
|
}
|
||
|
return input.map((element) => {
|
||
|
if (element instanceof this.target)
|
||
|
return element;
|
||
|
const tmpInstance = {};
|
||
|
tmpInstance[this.target.primaryKeyAttribute] = element;
|
||
|
return this.target.build(tmpInstance, { isNewRecord: false });
|
||
|
});
|
||
|
}
|
||
|
[Symbol.for("nodejs.util.inspect.custom")]() {
|
||
|
return this.as;
|
||
|
}
|
||
|
}
|
||
|
module.exports = Association;
|
||
|
//# sourceMappingURL=base.js.map
|