@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.
@@ -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
- .split(";")
25
- .map((sql) => sql.trim())
26
- .filter((sql) => sql.toLowerCase().includes(`alter table "${tableName.toLowerCase()}"`));
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
- try {
29
- await generator.execute(entityUpdates.join(";"));
30
- logger.info(`Link module "${serviceName}" migration executed`);
31
- }
32
- catch (error) {
33
- logger.error(`Link module "${serviceName}" migration failed to run - Error: ${error}`);
34
- }
35
- }
36
- else {
37
- logger.info(`Skipping "${tableName}" migration.`);
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): string;
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
- const fieldNames = primary.foreignKey.split(",").concat(foreign.foreignKey);
9
- const entityName = (0, utils_1.toPascalCase)("Link_" +
10
- (joinerConfig.databaseConfig?.tableName ??
11
- (0, compose_link_name_1.composeTableName)(primary.serviceName, primary.foreignKey, foreign.serviceName, foreign.foreignKey)));
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
- let typeDef = `
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.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": "^1.12.2",
40
- "@medusajs/types": "^1.11.5",
41
- "@medusajs/utils": "^1.10.4",
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"