@medusajs/link-modules 0.2.2 → 0.2.3-next-20231109161803
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/migration/index.js
CHANGED
|
@@ -19,23 +19,27 @@ function getMigration(joinerConfig, serviceName, primary, foreign) {
|
|
|
19
19
|
catch { }
|
|
20
20
|
const generator = orm.getSchemaGenerator();
|
|
21
21
|
if (hasTable) {
|
|
22
|
-
const updateSql = await generator.getUpdateSchemaSQL()
|
|
22
|
+
/* const updateSql = await generator.getUpdateSchemaSQL()
|
|
23
23
|
const entityUpdates = updateSql
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
.split(";")
|
|
25
|
+
.map((sql) => sql.trim())
|
|
26
|
+
.filter((sql) =>
|
|
27
|
+
sql.toLowerCase().includes(`alter table "${tableName.toLowerCase()}"`)
|
|
28
|
+
)
|
|
29
|
+
|
|
27
30
|
if (entityUpdates.length > 0) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
else {
|
|
37
|
-
|
|
38
|
-
}
|
|
31
|
+
try {
|
|
32
|
+
await generator.execute(entityUpdates.join(";"))
|
|
33
|
+
logger.info(`Link module "${serviceName}" migration executed`)
|
|
34
|
+
} catch (error) {
|
|
35
|
+
logger.error(
|
|
36
|
+
`Link module "${serviceName}" migration failed to run - Error: ${error}`
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
} else {
|
|
40
|
+
logger.info(`Skipping "${tableName}" migration.`)
|
|
41
|
+
}*/
|
|
42
|
+
logger.info(`Link module "${serviceName}" table update skipped because the table already exists. Please write your own migration if needed.`);
|
|
39
43
|
}
|
|
40
44
|
else {
|
|
41
45
|
try {
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { ModuleJoinerConfig, ModuleJoinerRelationship } from "@medusajs/types";
|
|
2
|
-
export declare function generateGraphQLSchema(joinerConfig: ModuleJoinerConfig, primary: ModuleJoinerRelationship, foreign: ModuleJoinerRelationship
|
|
2
|
+
export declare function generateGraphQLSchema(joinerConfig: ModuleJoinerConfig, primary: ModuleJoinerRelationship, foreign: ModuleJoinerRelationship, { logger }?: {
|
|
3
|
+
logger: any;
|
|
4
|
+
}): string;
|
|
@@ -4,11 +4,43 @@ exports.generateGraphQLSchema = void 0;
|
|
|
4
4
|
const modules_sdk_1 = require("@medusajs/modules-sdk");
|
|
5
5
|
const utils_1 = require("@medusajs/utils");
|
|
6
6
|
const compose_link_name_1 = require("./compose-link-name");
|
|
7
|
-
function generateGraphQLSchema(joinerConfig, primary, foreign) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
function generateGraphQLSchema(joinerConfig, primary, foreign, { logger } = { logger: console }) {
|
|
8
|
+
let fieldNames;
|
|
9
|
+
let entityName;
|
|
10
|
+
if (!joinerConfig.isReadOnlyLink) {
|
|
11
|
+
fieldNames = primary.foreignKey.split(",").concat(foreign.foreignKey);
|
|
12
|
+
entityName = (0, utils_1.toPascalCase)("Link_" +
|
|
13
|
+
(joinerConfig.databaseConfig?.tableName ??
|
|
14
|
+
(0, compose_link_name_1.composeTableName)(primary.serviceName, primary.foreignKey, foreign.serviceName, foreign.foreignKey)));
|
|
15
|
+
}
|
|
16
|
+
let typeDef = "";
|
|
17
|
+
for (const extend of joinerConfig.extends ?? []) {
|
|
18
|
+
const extendedModule = modules_sdk_1.MedusaModule.getModuleInstance(extend.serviceName);
|
|
19
|
+
if (!extendedModule && !extend.relationship.isInternalService) {
|
|
20
|
+
throw new Error(`Module ${extend.serviceName} not found. Please verify that the module is configured and installed, also the module must be loaded before the link modules.`);
|
|
21
|
+
}
|
|
22
|
+
const extJoinerConfig = modules_sdk_1.MedusaModule.getJoinerConfig(extend.relationship.serviceName);
|
|
23
|
+
let extendedEntityName = extJoinerConfig?.linkableKeys?.[extend.relationship.foreignKey];
|
|
24
|
+
if (!extendedEntityName && (!primary || !foreign)) {
|
|
25
|
+
logger.warn(`Link modules schema: No linkable key found for ${extend.relationship.foreignKey} on module ${extend.relationship.serviceName}.`);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const fieldName = (0, utils_1.camelToSnakeCase)((0, utils_1.lowerCaseFirst)(extend.relationship.alias));
|
|
29
|
+
let type = extend.relationship.isList ? `[${entityName}]` : entityName;
|
|
30
|
+
if (extJoinerConfig?.isReadOnlyLink) {
|
|
31
|
+
type = extend.relationship.isList
|
|
32
|
+
? `[${extendedEntityName}]`
|
|
33
|
+
: extendedEntityName;
|
|
34
|
+
}
|
|
35
|
+
typeDef += `
|
|
36
|
+
extend type ${extend.serviceName} {
|
|
37
|
+
${fieldName}: ${type}
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
if (joinerConfig.isReadOnlyLink) {
|
|
42
|
+
return typeDef;
|
|
43
|
+
}
|
|
12
44
|
// Pivot table fields
|
|
13
45
|
const fields = fieldNames.reduce((acc, curr) => {
|
|
14
46
|
acc[curr] = {
|
|
@@ -27,7 +59,7 @@ function generateGraphQLSchema(joinerConfig, primary, foreign) {
|
|
|
27
59
|
// Link table relationships
|
|
28
60
|
const primaryField = `${(0, utils_1.camelToSnakeCase)(primary.alias)}: ${(0, utils_1.toPascalCase)((0, compose_link_name_1.composeTableName)(primary.serviceName))}`;
|
|
29
61
|
const foreignField = `${(0, utils_1.camelToSnakeCase)(foreign.alias)}: ${(0, utils_1.toPascalCase)((0, compose_link_name_1.composeTableName)(foreign.serviceName))}`;
|
|
30
|
-
|
|
62
|
+
typeDef += `
|
|
31
63
|
type ${entityName} {
|
|
32
64
|
${Object.entries(fields)
|
|
33
65
|
.map(([field, { type, nullable }]) => `${field}: ${nullable ? type : `${type}!`}`)
|
|
@@ -41,25 +73,6 @@ function generateGraphQLSchema(joinerConfig, primary, foreign) {
|
|
|
41
73
|
deletedAt: String
|
|
42
74
|
}
|
|
43
75
|
`;
|
|
44
|
-
for (const extend of joinerConfig.extends ?? []) {
|
|
45
|
-
const extendedModule = modules_sdk_1.MedusaModule.getModuleInstance(extend.serviceName);
|
|
46
|
-
if (!extendedModule && !extend.relationship.isInternalService) {
|
|
47
|
-
throw new Error(`Module ${extend.serviceName} not found. Please verify that the module is configured and installed, also the module must be loaded before the link modules.`);
|
|
48
|
-
}
|
|
49
|
-
const joinerConfig = modules_sdk_1.MedusaModule.getJoinerConfig(extend.serviceName);
|
|
50
|
-
let extendedEntityName = joinerConfig?.linkableKeys?.[extend.relationship.primaryKey];
|
|
51
|
-
if (!extendedEntityName) {
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
extendedEntityName = (0, utils_1.toPascalCase)(extendedEntityName);
|
|
55
|
-
const linkTableFieldName = (0, utils_1.camelToSnakeCase)((0, utils_1.lowerCaseFirst)(extend.relationship.alias));
|
|
56
|
-
const type = extend.relationship.isList ? `[${entityName}]` : entityName;
|
|
57
|
-
typeDef += `
|
|
58
|
-
extend type ${extendedEntityName} {
|
|
59
|
-
${linkTableFieldName}: ${type}
|
|
60
|
-
}
|
|
61
|
-
`;
|
|
62
|
-
}
|
|
63
76
|
return typeDef;
|
|
64
77
|
}
|
|
65
78
|
exports.generateGraphQLSchema = generateGraphQLSchema;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@medusajs/link-modules",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3-next-20231109161803",
|
|
4
4
|
"description": "Medusa Default Link Modules Package and Definitions",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"typescript": "^5.1.6"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@medusajs/modules-sdk": "
|
|
40
|
-
"@medusajs/types": "
|
|
41
|
-
"@medusajs/utils": "
|
|
39
|
+
"@medusajs/modules-sdk": "1.12.3-next-20231109161803",
|
|
40
|
+
"@medusajs/types": "1.11.6-next-20231109161803",
|
|
41
|
+
"@medusajs/utils": "1.10.5-next-20231109161803",
|
|
42
42
|
"@mikro-orm/core": "5.7.12",
|
|
43
43
|
"@mikro-orm/postgresql": "5.7.12",
|
|
44
44
|
"awilix": "^8.0.0"
|