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

"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