UNPKG

2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.getAssociationsByRelation = exports.setAssociations = exports.getAssociations = exports.addAssociation = exports.getPreparedAssociationOptions = void 0;
4require("reflect-metadata");
5const ASSOCIATIONS_KEY = 'sequelize:associations';
6function getPreparedAssociationOptions(optionsOrForeignKey) {
7 let options = {};
8 if (optionsOrForeignKey) {
9 if (typeof optionsOrForeignKey === 'string') {
10 options.foreignKey = optionsOrForeignKey;
11 }
12 else {
13 options = Object.assign({}, optionsOrForeignKey);
14 }
15 }
16 return options;
17}
18exports.getPreparedAssociationOptions = getPreparedAssociationOptions;
19/**
20 * Stores association meta data for specified class
21 */
22function addAssociation(target, association) {
23 let associations = getAssociations(target);
24 if (!associations) {
25 associations = [];
26 }
27 associations.push(association);
28 setAssociations(target, associations);
29}
30exports.addAssociation = addAssociation;
31/**
32 * Returns association meta data from specified class
33 */
34function getAssociations(target) {
35 const associations = Reflect.getMetadata(ASSOCIATIONS_KEY, target);
36 if (associations) {
37 return [...associations];
38 }
39}
40exports.getAssociations = getAssociations;
41function setAssociations(target, associations) {
42 Reflect.defineMetadata(ASSOCIATIONS_KEY, associations, target);
43}
44exports.setAssociations = setAssociations;
45function getAssociationsByRelation(target, relatedClass) {
46 const associations = getAssociations(target);
47 return (associations || []).filter((association) => {
48 const _relatedClass = association.getAssociatedClass();
49 return (_relatedClass.prototype === relatedClass.prototype ||
50 relatedClass.prototype instanceof _relatedClass);
51 });
52}
53exports.getAssociationsByRelation = getAssociationsByRelation;
54//# sourceMappingURL=association-service.js.map
\No newline at end of file