1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.getForeignKeys = exports.addForeignKey = exports.getForeignKeyOptions = void 0;
|
4 | const FOREIGN_KEYS_KEY = 'sequelize:foreignKeys';
|
5 | function getForeignKeyOptions(relatedClass, classWithForeignKey, foreignKey) {
|
6 | let foreignKeyOptions = {};
|
7 | if (typeof foreignKey === 'string') {
|
8 | foreignKeyOptions.name = foreignKey;
|
9 | }
|
10 | else if (foreignKey && typeof foreignKey === 'object') {
|
11 | foreignKeyOptions = Object.assign({}, foreignKey);
|
12 | }
|
13 | if (!foreignKeyOptions.name && classWithForeignKey) {
|
14 | const foreignKeys = getForeignKeys(classWithForeignKey.prototype) || [];
|
15 | for (const key of foreignKeys) {
|
16 | if (key.relatedClassGetter() === relatedClass ||
|
17 | relatedClass.prototype instanceof key.relatedClassGetter()) {
|
18 | foreignKeyOptions.name = key.foreignKey;
|
19 | break;
|
20 | }
|
21 | }
|
22 | }
|
23 | if (!foreignKeyOptions.name) {
|
24 | throw new Error(`Foreign key for "${relatedClass.name}" is missing ` +
|
25 | `on "${classWithForeignKey.name}".`);
|
26 | }
|
27 | return foreignKeyOptions;
|
28 | }
|
29 | exports.getForeignKeyOptions = getForeignKeyOptions;
|
30 |
|
31 |
|
32 |
|
33 | function addForeignKey(target, relatedClassGetter, foreignKey) {
|
34 | let foreignKeys = getForeignKeys(target);
|
35 | if (!foreignKeys) {
|
36 | foreignKeys = [];
|
37 | }
|
38 | foreignKeys.push({
|
39 | relatedClassGetter,
|
40 | foreignKey,
|
41 | });
|
42 | setForeignKeys(target, foreignKeys);
|
43 | }
|
44 | exports.addForeignKey = addForeignKey;
|
45 |
|
46 |
|
47 |
|
48 | function getForeignKeys(target) {
|
49 | const foreignKeys = Reflect.getMetadata(FOREIGN_KEYS_KEY, target);
|
50 | if (foreignKeys) {
|
51 | return [...foreignKeys];
|
52 | }
|
53 | }
|
54 | exports.getForeignKeys = getForeignKeys;
|
55 |
|
56 |
|
57 |
|
58 | function setForeignKeys(target, foreignKeys) {
|
59 | Reflect.defineMetadata(FOREIGN_KEYS_KEY, foreignKeys, target);
|
60 | }
|
61 |
|
\ | No newline at end of file |