@acmekit/link-modules 2.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/definitions/cart-payment-collection.d.ts +3 -0
- package/dist/definitions/cart-payment-collection.d.ts.map +1 -0
- package/dist/definitions/cart-payment-collection.js +71 -0
- package/dist/definitions/cart-payment-collection.js.map +1 -0
- package/dist/definitions/cart-promotion.d.ts +3 -0
- package/dist/definitions/cart-promotion.d.ts.map +1 -0
- package/dist/definitions/cart-promotion.js +63 -0
- package/dist/definitions/cart-promotion.js.map +1 -0
- package/dist/definitions/customer-account-holder.d.ts +3 -0
- package/dist/definitions/customer-account-holder.d.ts.map +1 -0
- package/dist/definitions/customer-account-holder.js +75 -0
- package/dist/definitions/customer-account-holder.js.map +1 -0
- package/dist/definitions/fulfillment-provider-location.d.ts +3 -0
- package/dist/definitions/fulfillment-provider-location.d.ts.map +1 -0
- package/dist/definitions/fulfillment-provider-location.js +75 -0
- package/dist/definitions/fulfillment-provider-location.js.map +1 -0
- package/dist/definitions/fulfillment-set-location.d.ts +3 -0
- package/dist/definitions/fulfillment-set-location.d.ts.map +1 -0
- package/dist/definitions/fulfillment-set-location.js +75 -0
- package/dist/definitions/fulfillment-set-location.js.map +1 -0
- package/dist/definitions/index.d.ts +22 -0
- package/dist/definitions/index.d.ts.map +1 -0
- package/dist/definitions/index.js +38 -0
- package/dist/definitions/index.js.map +1 -0
- package/dist/definitions/invite-rbac-role.d.ts +3 -0
- package/dist/definitions/invite-rbac-role.d.ts.map +1 -0
- package/dist/definitions/invite-rbac-role.js +76 -0
- package/dist/definitions/invite-rbac-role.js.map +1 -0
- package/dist/definitions/order-cart.d.ts +3 -0
- package/dist/definitions/order-cart.d.ts.map +1 -0
- package/dist/definitions/order-cart.js +71 -0
- package/dist/definitions/order-cart.js.map +1 -0
- package/dist/definitions/order-claim-payment-collection.d.ts +3 -0
- package/dist/definitions/order-claim-payment-collection.d.ts.map +1 -0
- package/dist/definitions/order-claim-payment-collection.js +77 -0
- package/dist/definitions/order-claim-payment-collection.js.map +1 -0
- package/dist/definitions/order-exchange-payment-collection.d.ts +3 -0
- package/dist/definitions/order-exchange-payment-collection.d.ts.map +1 -0
- package/dist/definitions/order-exchange-payment-collection.js +77 -0
- package/dist/definitions/order-exchange-payment-collection.js.map +1 -0
- package/dist/definitions/order-fulfillment.d.ts +3 -0
- package/dist/definitions/order-fulfillment.d.ts.map +1 -0
- package/dist/definitions/order-fulfillment.js +75 -0
- package/dist/definitions/order-fulfillment.js.map +1 -0
- package/dist/definitions/order-payment-collection.d.ts +3 -0
- package/dist/definitions/order-payment-collection.d.ts.map +1 -0
- package/dist/definitions/order-payment-collection.js +75 -0
- package/dist/definitions/order-payment-collection.js.map +1 -0
- package/dist/definitions/order-promotion.d.ts +3 -0
- package/dist/definitions/order-promotion.d.ts.map +1 -0
- package/dist/definitions/order-promotion.js +80 -0
- package/dist/definitions/order-promotion.js.map +1 -0
- package/dist/definitions/order-return-fulfillment.d.ts +3 -0
- package/dist/definitions/order-return-fulfillment.d.ts.map +1 -0
- package/dist/definitions/order-return-fulfillment.js +72 -0
- package/dist/definitions/order-return-fulfillment.js.map +1 -0
- package/dist/definitions/product-sales-channel.d.ts +3 -0
- package/dist/definitions/product-sales-channel.d.ts.map +1 -0
- package/dist/definitions/product-sales-channel.js +76 -0
- package/dist/definitions/product-sales-channel.js.map +1 -0
- package/dist/definitions/product-shipping-profile.d.ts +3 -0
- package/dist/definitions/product-shipping-profile.d.ts.map +1 -0
- package/dist/definitions/product-shipping-profile.js +75 -0
- package/dist/definitions/product-shipping-profile.js.map +1 -0
- package/dist/definitions/product-variant-inventory-item.d.ts +3 -0
- package/dist/definitions/product-variant-inventory-item.d.ts.map +1 -0
- package/dist/definitions/product-variant-inventory-item.js +86 -0
- package/dist/definitions/product-variant-inventory-item.js.map +1 -0
- package/dist/definitions/product-variant-price-set.d.ts +3 -0
- package/dist/definitions/product-variant-price-set.d.ts.map +1 -0
- package/dist/definitions/product-variant-price-set.js +80 -0
- package/dist/definitions/product-variant-price-set.js.map +1 -0
- package/dist/definitions/publishable-api-key-sales-channel.d.ts +3 -0
- package/dist/definitions/publishable-api-key-sales-channel.d.ts.map +1 -0
- package/dist/definitions/publishable-api-key-sales-channel.js +82 -0
- package/dist/definitions/publishable-api-key-sales-channel.js.map +1 -0
- package/dist/definitions/readonly/cart-customer.d.ts +3 -0
- package/dist/definitions/readonly/cart-customer.d.ts.map +1 -0
- package/dist/definitions/readonly/cart-customer.js +40 -0
- package/dist/definitions/readonly/cart-customer.js.map +1 -0
- package/dist/definitions/readonly/cart-product.d.ts +3 -0
- package/dist/definitions/readonly/cart-product.d.ts.map +1 -0
- package/dist/definitions/readonly/cart-product.js +52 -0
- package/dist/definitions/readonly/cart-product.js.map +1 -0
- package/dist/definitions/readonly/cart-region.d.ts +3 -0
- package/dist/definitions/readonly/cart-region.d.ts.map +1 -0
- package/dist/definitions/readonly/cart-region.js +40 -0
- package/dist/definitions/readonly/cart-region.js.map +1 -0
- package/dist/definitions/readonly/cart-sales-channel.d.ts +3 -0
- package/dist/definitions/readonly/cart-sales-channel.d.ts.map +1 -0
- package/dist/definitions/readonly/cart-sales-channel.js +40 -0
- package/dist/definitions/readonly/cart-sales-channel.js.map +1 -0
- package/dist/definitions/readonly/cart-shipping-option.d.ts +3 -0
- package/dist/definitions/readonly/cart-shipping-option.d.ts.map +1 -0
- package/dist/definitions/readonly/cart-shipping-option.js +24 -0
- package/dist/definitions/readonly/cart-shipping-option.js.map +1 -0
- package/dist/definitions/readonly/index.d.ts +15 -0
- package/dist/definitions/readonly/index.d.ts.map +1 -0
- package/dist/definitions/readonly/index.js +31 -0
- package/dist/definitions/readonly/index.js.map +1 -0
- package/dist/definitions/readonly/inventory-level-stock-location.d.ts +3 -0
- package/dist/definitions/readonly/inventory-level-stock-location.d.ts.map +1 -0
- package/dist/definitions/readonly/inventory-level-stock-location.js +26 -0
- package/dist/definitions/readonly/inventory-level-stock-location.js.map +1 -0
- package/dist/definitions/readonly/line-item-adjustment-promotion.d.ts +3 -0
- package/dist/definitions/readonly/line-item-adjustment-promotion.d.ts.map +1 -0
- package/dist/definitions/readonly/line-item-adjustment-promotion.js +25 -0
- package/dist/definitions/readonly/line-item-adjustment-promotion.js.map +1 -0
- package/dist/definitions/readonly/order-customer.d.ts +3 -0
- package/dist/definitions/readonly/order-customer.d.ts.map +1 -0
- package/dist/definitions/readonly/order-customer.js +40 -0
- package/dist/definitions/readonly/order-customer.js.map +1 -0
- package/dist/definitions/readonly/order-product.d.ts +3 -0
- package/dist/definitions/readonly/order-product.d.ts.map +1 -0
- package/dist/definitions/readonly/order-product.js +54 -0
- package/dist/definitions/readonly/order-product.js.map +1 -0
- package/dist/definitions/readonly/order-region.d.ts +3 -0
- package/dist/definitions/readonly/order-region.d.ts.map +1 -0
- package/dist/definitions/readonly/order-region.js +40 -0
- package/dist/definitions/readonly/order-region.js.map +1 -0
- package/dist/definitions/readonly/order-sales-channel.d.ts +3 -0
- package/dist/definitions/readonly/order-sales-channel.d.ts.map +1 -0
- package/dist/definitions/readonly/order-sales-channel.js +40 -0
- package/dist/definitions/readonly/order-sales-channel.js.map +1 -0
- package/dist/definitions/readonly/product-translation.d.ts +3 -0
- package/dist/definitions/readonly/product-translation.d.ts.map +1 -0
- package/dist/definitions/readonly/product-translation.js +147 -0
- package/dist/definitions/readonly/product-translation.js.map +1 -0
- package/dist/definitions/readonly/store-currency.d.ts +3 -0
- package/dist/definitions/readonly/store-currency.d.ts.map +1 -0
- package/dist/definitions/readonly/store-currency.js +25 -0
- package/dist/definitions/readonly/store-currency.js.map +1 -0
- package/dist/definitions/readonly/store-locale.d.ts +3 -0
- package/dist/definitions/readonly/store-locale.d.ts.map +1 -0
- package/dist/definitions/readonly/store-locale.js +27 -0
- package/dist/definitions/readonly/store-locale.js.map +1 -0
- package/dist/definitions/region-payment-provider.d.ts +3 -0
- package/dist/definitions/region-payment-provider.d.ts.map +1 -0
- package/dist/definitions/region-payment-provider.js +78 -0
- package/dist/definitions/region-payment-provider.js.map +1 -0
- package/dist/definitions/sales-channel-location.d.ts +3 -0
- package/dist/definitions/sales-channel-location.d.ts.map +1 -0
- package/dist/definitions/sales-channel-location.js +80 -0
- package/dist/definitions/sales-channel-location.js.map +1 -0
- package/dist/definitions/shipping-option-price-set.d.ts +3 -0
- package/dist/definitions/shipping-option-price-set.d.ts.map +1 -0
- package/dist/definitions/shipping-option-price-set.js +78 -0
- package/dist/definitions/shipping-option-price-set.js.map +1 -0
- package/dist/definitions/user-rbac-role.d.ts +3 -0
- package/dist/definitions/user-rbac-role.d.ts.map +1 -0
- package/dist/definitions/user-rbac-role.js +76 -0
- package/dist/definitions/user-rbac-role.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/initialize/index.d.ts +16 -0
- package/dist/initialize/index.d.ts.map +1 -0
- package/dist/initialize/index.js +165 -0
- package/dist/initialize/index.js.map +1 -0
- package/dist/initialize/module-definition.d.ts +3 -0
- package/dist/initialize/module-definition.d.ts.map +1 -0
- package/dist/initialize/module-definition.js +18 -0
- package/dist/initialize/module-definition.js.map +1 -0
- package/dist/loaders/connection.d.ts +4 -0
- package/dist/loaders/connection.d.ts.map +1 -0
- package/dist/loaders/connection.js +19 -0
- package/dist/loaders/connection.js.map +1 -0
- package/dist/loaders/container.d.ts +3 -0
- package/dist/loaders/container.d.ts.map +1 -0
- package/dist/loaders/container.js +32 -0
- package/dist/loaders/container.js.map +1 -0
- package/dist/loaders/index.d.ts +7 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +14 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/migration/index.d.ts +104 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +391 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/repositories/index.d.ts +3 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +8 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/link.d.ts +36 -0
- package/dist/repositories/link.d.ts.map +1 -0
- package/dist/repositories/link.js +33 -0
- package/dist/repositories/link.js.map +1 -0
- package/dist/services/dynamic-service-class.d.ts +8 -0
- package/dist/services/dynamic-service-class.d.ts.map +1 -0
- package/dist/services/dynamic-service-class.js +29 -0
- package/dist/services/dynamic-service-class.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +26 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/link-module-service.d.ts +42 -0
- package/dist/services/link-module-service.d.ts.map +1 -0
- package/dist/services/link-module-service.js +296 -0
- package/dist/services/link-module-service.js.map +1 -0
- package/dist/services/link.d.ts +18 -0
- package/dist/services/link.d.ts.map +1 -0
- package/dist/services/link.js +139 -0
- package/dist/services/link.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/generate-entity.d.ts +12 -0
- package/dist/utils/generate-entity.d.ts.map +1 -0
- package/dist/utils/generate-entity.js +118 -0
- package/dist/utils/generate-entity.js.map +1 -0
- package/dist/utils/generate-schema.d.ts +5 -0
- package/dist/utils/generate-schema.d.ts.map +1 -0
- package/dist/utils/generate-schema.js +156 -0
- package/dist/utils/generate-schema.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.initialize = void 0;
|
|
37
|
+
exports.getMigrationPlanner = getMigrationPlanner;
|
|
38
|
+
const modules_sdk_1 = require("@acmekit/framework/modules-sdk");
|
|
39
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
40
|
+
const linkDefinitions = __importStar(require("../definitions"));
|
|
41
|
+
const migration_1 = require("../migration");
|
|
42
|
+
const utils_2 = require("../utils");
|
|
43
|
+
const module_definition_1 = require("./module-definition");
|
|
44
|
+
const initialize = async (options, pluginLinksDefinitions, injectedDependencies, cwd, migrationOnly, schemaOnly) => {
|
|
45
|
+
const allLinks = {};
|
|
46
|
+
const modulesLoadedKeys = modules_sdk_1.AcmeKitModule.getLoadedModules().map((mod) => Object.keys(mod)[0]);
|
|
47
|
+
const allLinksToLoad = Object.values(linkDefinitions)
|
|
48
|
+
.concat(pluginLinksDefinitions ?? [])
|
|
49
|
+
.filter((linkDefinition) => !(0, utils_1.isFileSkipped)(linkDefinition));
|
|
50
|
+
await (0, utils_1.promiseAll)(allLinksToLoad.map(async (linkDefinition) => {
|
|
51
|
+
const definition = JSON.parse(JSON.stringify(linkDefinition));
|
|
52
|
+
const [primary, foreign] = definition.relationships ?? [];
|
|
53
|
+
if (definition.relationships?.length !== 2 &&
|
|
54
|
+
!definition.isReadOnlyLink) {
|
|
55
|
+
throw new Error(`Link module ${definition.serviceName} can only link 2 modules.`);
|
|
56
|
+
}
|
|
57
|
+
else if (foreign?.foreignKey?.split(",").length > 1 &&
|
|
58
|
+
!definition.isReadOnlyLink) {
|
|
59
|
+
throw new Error(`Foreign key cannot be a composed key.`);
|
|
60
|
+
}
|
|
61
|
+
if (Array.isArray(definition.extraDataFields)) {
|
|
62
|
+
const extraDataFields = definition.extraDataFields;
|
|
63
|
+
const definedDbFields = Object.keys(definition.databaseConfig?.extraFields || {});
|
|
64
|
+
const difference = (0, utils_1.arrayDifference)(extraDataFields, definedDbFields);
|
|
65
|
+
if (difference.length) {
|
|
66
|
+
throw new Error(`extraDataFields (fieldNames: ${difference.join(",")}) need to be configured under databaseConfig (serviceName: ${definition.serviceName}).`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const serviceKey = !definition.isReadOnlyLink
|
|
70
|
+
? definition.serviceName ??
|
|
71
|
+
(0, utils_1.composeLinkName)(primary.serviceName, primary.foreignKey, foreign.serviceName, foreign.foreignKey)
|
|
72
|
+
: (0, utils_1.simpleHash)(JSON.stringify(definition.extends));
|
|
73
|
+
if (modulesLoadedKeys.includes(serviceKey)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
else if (serviceKey in allLinks) {
|
|
77
|
+
throw new Error(`Link module ${serviceKey} already defined.`);
|
|
78
|
+
}
|
|
79
|
+
if (definition.isReadOnlyLink) {
|
|
80
|
+
const extended = [];
|
|
81
|
+
for (const extension of definition.extends ?? []) {
|
|
82
|
+
if (modulesLoadedKeys.includes(extension.serviceName) &&
|
|
83
|
+
modulesLoadedKeys.includes(extension.relationship.serviceName)) {
|
|
84
|
+
extended.push(extension);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
definition.extends = extended;
|
|
88
|
+
if (extended.length === 0) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (!modulesLoadedKeys.includes(primary.serviceName) ||
|
|
93
|
+
!modulesLoadedKeys.includes(foreign.serviceName)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const logger = injectedDependencies?.[utils_1.ContainerRegistrationKeys.LOGGER] ?? console;
|
|
97
|
+
definition.schema = (0, utils_2.generateGraphQLSchema)(definition, primary, foreign, {
|
|
98
|
+
logger,
|
|
99
|
+
});
|
|
100
|
+
if (!Array.isArray(definition.alias)) {
|
|
101
|
+
definition.alias = definition.alias ? [definition.alias] : [];
|
|
102
|
+
}
|
|
103
|
+
for (const alias of definition.alias) {
|
|
104
|
+
alias.args ??= {};
|
|
105
|
+
alias.entity = (0, utils_1.toPascalCase)("Link_" +
|
|
106
|
+
(definition.databaseConfig?.tableName ??
|
|
107
|
+
(0, utils_1.composeTableName)(primary.serviceName, primary.foreignKey, foreign.serviceName, foreign.foreignKey)));
|
|
108
|
+
}
|
|
109
|
+
const moduleDefinition = (0, module_definition_1.getLinkModuleDefinition)(definition, primary, foreign);
|
|
110
|
+
const linkModuleDefinition = {
|
|
111
|
+
key: serviceKey,
|
|
112
|
+
label: serviceKey,
|
|
113
|
+
dependencies: [utils_1.Modules.EVENT_BUS],
|
|
114
|
+
defaultModuleDeclaration: {
|
|
115
|
+
scope: modules_sdk_1.MODULE_SCOPE.INTERNAL,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
const loaded = await modules_sdk_1.AcmeKitModule.bootstrapLink({
|
|
119
|
+
definition: linkModuleDefinition,
|
|
120
|
+
declaration: options,
|
|
121
|
+
moduleExports: moduleDefinition,
|
|
122
|
+
injectedDependencies,
|
|
123
|
+
cwd,
|
|
124
|
+
migrationOnly,
|
|
125
|
+
schemaOnly,
|
|
126
|
+
});
|
|
127
|
+
allLinks[serviceKey] = Object.values(loaded)[0];
|
|
128
|
+
}));
|
|
129
|
+
return allLinks;
|
|
130
|
+
};
|
|
131
|
+
exports.initialize = initialize;
|
|
132
|
+
/**
|
|
133
|
+
* Prepare an execution plan and run the migrations accordingly.
|
|
134
|
+
* It includes creating, updating, deleting the tables according to the execution plan.
|
|
135
|
+
* If any unsafe sql is identified then we will notify the user to act manually.
|
|
136
|
+
*
|
|
137
|
+
* @param options
|
|
138
|
+
* @param pluginLinksDefinition
|
|
139
|
+
*/
|
|
140
|
+
function getMigrationPlanner(options, pluginLinksDefinition) {
|
|
141
|
+
const modulesLoadedKeys = modules_sdk_1.AcmeKitModule.getLoadedModules().map((mod) => Object.keys(mod)[0]);
|
|
142
|
+
const allLinksToLoad = Object.values(linkDefinitions).concat(pluginLinksDefinition ?? []);
|
|
143
|
+
const allLinks = new Set();
|
|
144
|
+
for (const definition of allLinksToLoad) {
|
|
145
|
+
if (definition.isReadOnlyLink) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (definition.relationships?.length !== 2) {
|
|
149
|
+
throw new Error(`Link module ${definition.serviceName} must have 2 relationships.`);
|
|
150
|
+
}
|
|
151
|
+
const [primary, foreign] = definition.relationships ?? [];
|
|
152
|
+
const serviceKey = definition.serviceName ??
|
|
153
|
+
(0, utils_1.composeLinkName)(primary.serviceName, primary.foreignKey, foreign.serviceName, foreign.foreignKey);
|
|
154
|
+
if (allLinks.has(serviceKey)) {
|
|
155
|
+
throw new Error(`Link module ${serviceKey} already exists.`);
|
|
156
|
+
}
|
|
157
|
+
allLinks.add(serviceKey);
|
|
158
|
+
if (!modulesLoadedKeys.includes(primary.serviceName) ||
|
|
159
|
+
!modulesLoadedKeys.includes(foreign.serviceName)) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return new migration_1.MigrationsExecutionPlanner(allLinksToLoad, options);
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/initialize/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { JoinerRelationship, ModuleExports, ModuleJoinerConfig } from "@acmekit/framework/types";
|
|
2
|
+
export declare function getLinkModuleDefinition(joinerConfig: ModuleJoinerConfig, primary: JoinerRelationship, foreign: JoinerRelationship): ModuleExports;
|
|
3
|
+
//# sourceMappingURL=module-definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-definition.d.ts","sourceRoot":"","sources":["../../src/initialize/module-definition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EACnB,MAAM,0BAA0B,CAAA;AAIjC,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,aAAa,CAWf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLinkModuleDefinition = getLinkModuleDefinition;
|
|
4
|
+
const _services_1 = require("../services");
|
|
5
|
+
const loaders_1 = require("../loaders");
|
|
6
|
+
function getLinkModuleDefinition(joinerConfig, primary, foreign) {
|
|
7
|
+
return {
|
|
8
|
+
service: joinerConfig.isReadOnlyLink
|
|
9
|
+
? (0, _services_1.getReadOnlyModuleService)(joinerConfig)
|
|
10
|
+
: (0, _services_1.getModuleService)(joinerConfig),
|
|
11
|
+
loaders: (0, loaders_1.getLoaders)({
|
|
12
|
+
joinerConfig,
|
|
13
|
+
primary,
|
|
14
|
+
foreign,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=module-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-definition.js","sourceRoot":"","sources":["../../src/initialize/module-definition.ts"],"names":[],"mappings":";;AAQA,0DAeC;AAlBD,yCAAsE;AACtE,wCAAuC;AAEvC,SAAgB,uBAAuB,CACrC,YAAgC,EAChC,OAA2B,EAC3B,OAA2B;IAE3B,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,cAAc;YAClC,CAAC,CAAC,IAAA,oCAAwB,EAAC,YAAY,CAAC;YACxC,CAAC,CAAC,IAAA,4BAAgB,EAAC,YAAY,CAAC;QAClC,OAAO,EAAE,IAAA,oBAAU,EAAC;YAClB,YAAY;YACZ,OAAO;YACP,OAAO;SACR,CAAC;KACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InternalModuleDeclaration, LoaderOptions, ModuleServiceInitializeCustomDataLayerOptions, ModuleServiceInitializeOptions } from "@acmekit/framework/types";
|
|
2
|
+
import { EntitySchema } from "@acmekit/framework/mikro-orm/core";
|
|
3
|
+
export declare function connectionLoader(entity: EntitySchema): ({ options, container, logger, }: LoaderOptions<ModuleServiceInitializeOptions | ModuleServiceInitializeCustomDataLayerOptions>, moduleDeclaration?: InternalModuleDeclaration) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/loaders/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,6CAA6C,EAC7C,8BAA8B,EAC/B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,IAEjD,iCAIG,aAAa,CACZ,8BAA8B,GAC9B,6CAA6C,CAChD,EACD,oBAAoB,yBAAyB,KAC5C,OAAO,CAAC,IAAI,CAAC,CAajB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.connectionLoader = connectionLoader;
|
|
4
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
5
|
+
function connectionLoader(entity) {
|
|
6
|
+
return async ({ options, container, logger, }, moduleDeclaration) => {
|
|
7
|
+
const pathToMigrations = __dirname + "/../migrations";
|
|
8
|
+
await utils_1.ModulesSdkUtils.mikroOrmConnectionLoader({
|
|
9
|
+
moduleName: "link_module",
|
|
10
|
+
entities: [entity],
|
|
11
|
+
container,
|
|
12
|
+
options,
|
|
13
|
+
moduleDeclaration,
|
|
14
|
+
logger,
|
|
15
|
+
pathToMigrations,
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/loaders/connection.ts"],"names":[],"mappings":";;AAUA,4CAwBC;AA5BD,oDAA0D;AAI1D,SAAgB,gBAAgB,CAAC,MAAoB;IACnD,OAAO,KAAK,EACV,EACE,OAAO,EACP,SAAS,EACT,MAAM,GAIP,EACD,iBAA6C,EAC9B,EAAE;QACjB,MAAM,gBAAgB,GAAG,SAAS,GAAG,gBAAgB,CAAA;QAErD,MAAM,uBAAe,CAAC,wBAAwB,CAAC;YAC7C,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,SAAS;YACT,OAAO;YACP,iBAAiB;YACjB,MAAM;YACN,gBAAgB;SACjB,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InternalModuleDeclaration, LoaderOptions, ModuleJoinerConfig, ModulesSdkTypes } from "@acmekit/framework/types";
|
|
2
|
+
export declare function containerLoader(entity: any, joinerConfig: ModuleJoinerConfig): ({ options, container, }: LoaderOptions<ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions>, moduleDeclaration?: InternalModuleDeclaration) => Promise<void>;
|
|
3
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/loaders/container.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,eAAe,EAChB,MAAM,0BAA0B,CAAA;AAQjC,wBAAgB,eAAe,CAAC,MAAM,KAAA,EAAE,YAAY,EAAE,kBAAkB,IAEpE,yBAGG,aAAa,CACZ,eAAe,CAAC,8BAA8B,GAC9C,eAAe,CAAC,6CAA6C,CAChE,EACD,oBAAoB,yBAAyB,KAC5C,OAAO,CAAC,IAAI,CAAC,CAyCjB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.containerLoader = containerLoader;
|
|
4
|
+
const _repositories_1 = require("../repositories");
|
|
5
|
+
const _services_1 = require("../services");
|
|
6
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
7
|
+
const awilix_1 = require("@acmekit/framework/awilix");
|
|
8
|
+
function containerLoader(entity, joinerConfig) {
|
|
9
|
+
return async ({ options, container, }, moduleDeclaration) => {
|
|
10
|
+
const [primary, foreign] = joinerConfig.relationships;
|
|
11
|
+
const serviceName = !joinerConfig.isReadOnlyLink
|
|
12
|
+
? joinerConfig.serviceName ??
|
|
13
|
+
(0, utils_1.composeLinkName)(primary.serviceName, primary.foreignKey, foreign.serviceName, foreign.foreignKey)
|
|
14
|
+
: (0, utils_1.simpleHash)(JSON.stringify(joinerConfig.extends));
|
|
15
|
+
const entityName = (0, utils_1.toPascalCase)("Link_" +
|
|
16
|
+
(joinerConfig.databaseConfig?.tableName ??
|
|
17
|
+
(0, utils_1.composeTableName)(primary.serviceName, primary.foreignKey, foreign.serviceName, foreign.foreignKey)));
|
|
18
|
+
container.register({
|
|
19
|
+
joinerConfig: (0, awilix_1.asValue)(joinerConfig),
|
|
20
|
+
primaryKey: (0, awilix_1.asValue)(primary.foreignKey.split(",")),
|
|
21
|
+
foreignKey: (0, awilix_1.asValue)(foreign.foreignKey),
|
|
22
|
+
extraFields: (0, awilix_1.asValue)(Object.keys(joinerConfig.databaseConfig?.extraFields || {})),
|
|
23
|
+
linkModuleService: (0, awilix_1.asClass)((0, _services_1.getModuleService)(joinerConfig)).singleton(),
|
|
24
|
+
linkService: (0, awilix_1.asClass)(_services_1.LinkService).singleton(),
|
|
25
|
+
baseRepository: (0, awilix_1.asClass)(_repositories_1.BaseRepository).singleton(),
|
|
26
|
+
linkRepository: (0, awilix_1.asClass)((0, _repositories_1.getLinkRepository)(entity)).singleton(),
|
|
27
|
+
entityName: (0, awilix_1.asValue)(entityName),
|
|
28
|
+
serviceName: (0, awilix_1.asValue)(serviceName),
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/loaders/container.ts"],"names":[],"mappings":";;AAgBA,0CAmDC;AAnED,iDAAiE;AACjE,yCAAyD;AAQzD,oDAKiC;AACjC,sDAA4D;AAC5D,SAAgB,eAAe,CAAC,MAAM,EAAE,YAAgC;IACtE,OAAO,KAAK,EACV,EACE,OAAO,EACP,SAAS,GAIV,EACD,iBAA6C,EAC9B,EAAE;QACjB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,aAAc,CAAA;QAEtD,MAAM,WAAW,GAAG,CAAC,YAAY,CAAC,cAAc;YAC9C,CAAC,CAAC,YAAY,CAAC,WAAW;gBACxB,IAAA,uBAAe,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,UAAU,CACnB;YACH,CAAC,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;QAEpD,MAAM,UAAU,GAAG,IAAA,oBAAY,EAC7B,OAAO;YACL,CAAC,YAAY,CAAC,cAAc,EAAE,SAAS;gBACrC,IAAA,wBAAgB,EACd,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,UAAU,CACnB,CAAC,CACP,CAAA;QAED,SAAS,CAAC,QAAQ,CAAC;YACjB,YAAY,EAAE,IAAA,gBAAO,EAAC,YAAY,CAAC;YACnC,UAAU,EAAE,IAAA,gBAAO,EAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,UAAU,EAAE,IAAA,gBAAO,EAAC,OAAO,CAAC,UAAU,CAAC;YACvC,WAAW,EAAE,IAAA,gBAAO,EAClB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,IAAI,EAAE,CAAC,CAC5D;YAED,iBAAiB,EAAE,IAAA,gBAAO,EAAC,IAAA,4BAAgB,EAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE;YACtE,WAAW,EAAE,IAAA,gBAAO,EAAC,uBAAW,CAAC,CAAC,SAAS,EAAE;YAE7C,cAAc,EAAE,IAAA,gBAAO,EAAC,8BAAc,CAAC,CAAC,SAAS,EAAE;YACnD,cAAc,EAAE,IAAA,gBAAO,EAAC,IAAA,iCAAiB,EAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;YAC9D,UAAU,EAAE,IAAA,gBAAO,EAAC,UAAU,CAAC;YAC/B,WAAW,EAAE,IAAA,gBAAO,EAAC,WAAW,CAAC;SAClC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { JoinerRelationship, ModuleJoinerConfig, ModuleLoaderFunction } from "@acmekit/framework/types";
|
|
2
|
+
export declare function getLoaders({ joinerConfig, primary, foreign, }: {
|
|
3
|
+
joinerConfig: ModuleJoinerConfig;
|
|
4
|
+
primary: JoinerRelationship;
|
|
5
|
+
foreign: JoinerRelationship;
|
|
6
|
+
}): ModuleLoaderFunction[];
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loaders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,0BAA0B,CAAA;AAMjC,wBAAgB,UAAU,CAAC,EACzB,YAAY,EACZ,OAAO,EACP,OAAO,GACR,EAAE;IACD,YAAY,EAAE,kBAAkB,CAAA;IAChC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,OAAO,EAAE,kBAAkB,CAAA;CAC5B,GAAG,oBAAoB,EAAE,CAOzB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLoaders = getLoaders;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const connection_1 = require("./connection");
|
|
6
|
+
const container_1 = require("./container");
|
|
7
|
+
function getLoaders({ joinerConfig, primary, foreign, }) {
|
|
8
|
+
if (joinerConfig.isReadOnlyLink) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const entity = (0, utils_1.generateEntity)(joinerConfig, primary, foreign);
|
|
12
|
+
return [(0, connection_1.connectionLoader)(entity), (0, container_1.containerLoader)(entity, joinerConfig)];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loaders/index.ts"],"names":[],"mappings":";;AAUA,gCAeC;AAnBD,oCAAyC;AACzC,6CAA+C;AAC/C,2CAA6C;AAE7C,SAAgB,UAAU,CAAC,EACzB,YAAY,EACZ,OAAO,EACP,OAAO,GAKR;IACC,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;QAChC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC7D,OAAO,CAAC,IAAA,6BAAgB,EAAC,MAAM,CAAC,EAAE,IAAA,2BAAe,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;AAC1E,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ILinkMigrationsPlanner, LinkMigrationsPlannerAction, ModuleJoinerConfig, ModuleServiceInitializeOptions, PlannerActionLinkDescriptor } from "@acmekit/framework/types";
|
|
2
|
+
import { EntitySchema, MikroORM } from "@acmekit/framework/mikro-orm/core";
|
|
3
|
+
import { PostgreSqlDriver } from "@acmekit/framework/mikro-orm/postgresql";
|
|
4
|
+
/**
|
|
5
|
+
* The migrations execution planner creates a plan of SQL queries
|
|
6
|
+
* to be executed to keep link modules database state in sync
|
|
7
|
+
* with the links defined inside the user application.
|
|
8
|
+
*/
|
|
9
|
+
export declare class MigrationsExecutionPlanner implements ILinkMigrationsPlanner {
|
|
10
|
+
#private;
|
|
11
|
+
/**
|
|
12
|
+
* The table that keeps a track of tables generated by the link
|
|
13
|
+
* module.
|
|
14
|
+
*/
|
|
15
|
+
protected tableName: string;
|
|
16
|
+
constructor(joinerConfig: ModuleJoinerConfig[], options?: ModuleServiceInitializeOptions);
|
|
17
|
+
/**
|
|
18
|
+
* Initializes the ORM using the normalized dbConfig and set
|
|
19
|
+
* of provided entities
|
|
20
|
+
*/
|
|
21
|
+
protected createORM(entities?: EntitySchema[]): Promise<MikroORM<PostgreSqlDriver, import("@acmekit/framework/mikro-orm/postgresql").EntityManager<PostgreSqlDriver> & import("@acmekit/framework/mikro-orm/core").EntityManager<import("@acmekit/framework/mikro-orm/core").IDatabaseDriver<import("@acmekit/framework/mikro-orm/core").Connection>>>>;
|
|
22
|
+
/**
|
|
23
|
+
* Ensure the table to track link modules migrations
|
|
24
|
+
* exists.
|
|
25
|
+
*
|
|
26
|
+
* @param orm MikroORM
|
|
27
|
+
*/
|
|
28
|
+
protected ensureMigrationsTable(orm: MikroORM<PostgreSqlDriver>): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Ensure the migrations table is in sync
|
|
31
|
+
*
|
|
32
|
+
* @param orm
|
|
33
|
+
* @protected
|
|
34
|
+
*/
|
|
35
|
+
protected ensureMigrationsTableUpToDate(orm: MikroORM<PostgreSqlDriver>): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Insert tuple to the migrations table and create the link table
|
|
38
|
+
*
|
|
39
|
+
* @param orm
|
|
40
|
+
* @param action
|
|
41
|
+
* @protected
|
|
42
|
+
*/
|
|
43
|
+
protected createLinkTable(orm: MikroORM<PostgreSqlDriver>, action: LinkMigrationsPlannerAction & {
|
|
44
|
+
linkDescriptor: PlannerActionLinkDescriptor;
|
|
45
|
+
sql: string;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Drops the link table and untracks it from the "link_modules_migrations"
|
|
49
|
+
* table.
|
|
50
|
+
*/
|
|
51
|
+
protected dropLinkTable(orm: MikroORM<PostgreSqlDriver>, tableName: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Returns an array of table names that have been tracked during
|
|
54
|
+
* the last run. In short, these tables were created by the
|
|
55
|
+
* link modules migrations runner.
|
|
56
|
+
*
|
|
57
|
+
* @param orm MikroORM
|
|
58
|
+
*/
|
|
59
|
+
protected getTrackedLinksTables(orm: MikroORM<PostgreSqlDriver>): Promise<{
|
|
60
|
+
table_name: string;
|
|
61
|
+
link_descriptor: PlannerActionLinkDescriptor;
|
|
62
|
+
}[]>;
|
|
63
|
+
private pickTableRelatedCommands;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the migration plan for a specific link entity.
|
|
66
|
+
*/
|
|
67
|
+
protected getEntityMigrationPlan(linkDescriptor: PlannerActionLinkDescriptor, entity: EntitySchema, trackedLinksTables: string[]): Promise<LinkMigrationsPlannerAction>;
|
|
68
|
+
/**
|
|
69
|
+
* This method loops over the tables we have fetched from the
|
|
70
|
+
* "link_module_migrations" tables and checks if their new
|
|
71
|
+
* name is different from the tracked name and in that
|
|
72
|
+
* case it will rename the actual table and also the
|
|
73
|
+
* tracked entry.
|
|
74
|
+
*/
|
|
75
|
+
protected migrateOldTables(orm: MikroORM<PostgreSqlDriver>, trackedTables: {
|
|
76
|
+
table_name: string;
|
|
77
|
+
link_descriptor: PlannerActionLinkDescriptor;
|
|
78
|
+
}[]): Promise<{
|
|
79
|
+
table_name: string;
|
|
80
|
+
link_descriptor: PlannerActionLinkDescriptor;
|
|
81
|
+
}[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Renames existing table and also its tracked entry
|
|
84
|
+
*/
|
|
85
|
+
protected renameOldTable(orm: MikroORM<PostgreSqlDriver>, oldName: string, newName: string, descriptor: PlannerActionLinkDescriptor): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Creates a plan to executed in order to keep the database state in
|
|
88
|
+
* sync with the user-defined links.
|
|
89
|
+
*
|
|
90
|
+
* This method only creates a plan and does not change the database
|
|
91
|
+
* state. You must call the "executePlan" method for that.
|
|
92
|
+
*/
|
|
93
|
+
createPlan(): Promise<LinkMigrationsPlannerAction[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Executes the actionsPlan actions where the action is one of 'create' | 'update' | 'delete'.
|
|
96
|
+
* 'noop' and 'notify' actions are implicitly ignored. If a notify action needs to be
|
|
97
|
+
* executed, you can mutate its action to 'update', in that scenario it means that an unsafe
|
|
98
|
+
* update sql (from our point of view) will be executed and some data could be lost.
|
|
99
|
+
*
|
|
100
|
+
* @param actionPlan
|
|
101
|
+
*/
|
|
102
|
+
executePlan(actionPlan: LinkMigrationsPlannerAction[]): Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,8BAA8B,EAC9B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAEL,gBAAgB,EACjB,MAAM,yCAAyC,CAAA;AAUhD;;;;GAIG;AACH,qBAAa,0BAA2B,YAAW,sBAAsB;;IAsBvE;;;OAGG;IACH,SAAS,CAAC,SAAS,SAA2B;gBAG5C,YAAY,EAAE,kBAAkB,EAAE,EAClC,OAAO,CAAC,EAAE,8BAA8B;IA0B1C;;;OAGG;cACa,SAAS,CAAC,QAAQ,GAAE,YAAY,EAAO;IAIvD;;;;;OAKG;cACa,qBAAqB,CACnC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;OAKG;cACa,6BAA6B,CAC3C,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAuDjC;;;;;;OAMG;cACa,eAAe,CAC7B,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAC/B,MAAM,EAAE,2BAA2B,GAAG;QACpC,cAAc,EAAE,2BAA2B,CAAA;QAC3C,GAAG,EAAE,MAAM,CAAA;KACZ;IAqBH;;;OAGG;cACa,aAAa,CAC3B,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAC/B,SAAS,EAAE,MAAM;IAUnB;;;;;;OAMG;cACa,qBAAqB,CACnC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC9B,OAAO,CACR;QACE,UAAU,EAAE,MAAM,CAAA;QAClB,eAAe,EAAE,2BAA2B,CAAA;KAC7C,EAAE,CACJ;IAkBD,OAAO,CAAC,wBAAwB;IAsBhC;;OAEG;cACa,sBAAsB,CACpC,cAAc,EAAE,2BAA2B,EAC3C,MAAM,EAAE,YAAY,EACpB,kBAAkB,EAAE,MAAM,EAAE,GAC3B,OAAO,CAAC,2BAA2B,CAAC;IA6EvC;;;;;;OAMG;cACa,gBAAgB,CAC9B,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAC/B,aAAa,EAAE;QACb,UAAU,EAAE,MAAM,CAAA;QAClB,eAAe,EAAE,2BAA2B,CAAA;KAC7C,EAAE;oBAGW,MAAM;yBACD,2BAA2B;;IA0ChD;;OAEG;cACa,cAAc,CAC5B,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,2BAA2B;IAczC;;;;;;OAMG;IACG,UAAU;IA2DhB;;;;;;;OAOG;IACG,WAAW,CAAC,UAAU,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B5E"}
|