chore: Migrate modules to use the Module util (#7964)

**What**
Apply the `Module` util to each module to handle the export and provide the linkable configuration object.

- Most joiner config that does not have any special config are removed/cleaned up in favor of the autogenerated one or simpler one
- linkable are now available in all modules
- cleaned up the dependencies of the modules

FIXES CORE-2410
This commit is contained in:
Adrien de Peretti
2024-07-05 15:00:40 +02:00
committed by GitHub
parent eafa3560ae
commit b368251ca3
99 changed files with 1267 additions and 488 deletions

View File

@@ -4,7 +4,7 @@ import {
IWorkflowEngineService,
RemoteQueryFunction,
} from "@medusajs/types"
import { Modules, TransactionHandlerType } from "@medusajs/utils"
import { Module, Modules, TransactionHandlerType } from "@medusajs/utils"
import { moduleIntegrationTestRunner } from "medusa-test-utils"
import { setTimeout as setTimeoutPromise } from "timers/promises"
import "../__fixtures__"
@@ -20,6 +20,7 @@ import {
workflowEventGroupIdStep2Mock,
} from "../__fixtures__/workflow_event_group_id"
import { createScheduled } from "../__fixtures__/workflow_scheduled"
import { WorkflowsModuleService } from "@services"
jest.setTimeout(100000)
@@ -34,6 +35,29 @@ moduleIntegrationTestRunner<IWorkflowEngineService>({
query = medusaApp.query
})
it(`should export the appropriate linkable configuration`, () => {
const linkable = Module(Modules.WORKFLOW_ENGINE, {
service: WorkflowsModuleService,
}).linkable
expect(Object.keys(linkable)).toEqual(["workflowExecution"])
Object.keys(linkable).forEach((key) => {
delete linkable[key].toJSON
})
expect(linkable).toEqual({
workflowExecution: {
id: {
linkable: "workflow_execution_id",
primaryKey: "id",
serviceName: "workflows",
field: "workflowExecution",
},
},
})
})
it("should execute an async workflow keeping track of the event group id provided in the context", async () => {
const eventGroupId = "event-group-id"

View File

@@ -45,15 +45,12 @@
"typescript": "^5.1.6"
},
"dependencies": {
"@medusajs/modules-sdk": "^1.12.11",
"@medusajs/utils": "^1.11.9",
"@medusajs/workflows-sdk": "^0.1.6",
"@mikro-orm/core": "5.9.7",
"@mikro-orm/migrations": "5.9.7",
"@mikro-orm/postgresql": "5.9.7",
"awilix": "^8.0.0",
"cron-parser": "^4.9.0",
"dotenv": "^16.4.5",
"knex": "2.4.2"
"cron-parser": "^4.9.0"
}
}

View File

@@ -1,6 +1,8 @@
import { moduleDefinition } from "./module-definition"
import { Module, Modules } from "@medusajs/utils"
import { WorkflowsModuleService } from "@services"
import { loadUtils } from "./loaders"
export default moduleDefinition
export * from "./loaders"
export * from "./models"
export default Module(Modules.WORKFLOW_ENGINE, {
service: WorkflowsModuleService,
loaders: [loadUtils],
})

View File

@@ -1,3 +0,0 @@
import { defineJoinerConfig, Modules } from "@medusajs/utils"
export const joinerConfig = defineJoinerConfig(Modules.WORKFLOW_ENGINE)

View File

@@ -1 +1 @@
export * from "./utils"
export { default as loadUtils } from "./utils"

View File

@@ -1,11 +0,0 @@
import { ModuleExports } from "@medusajs/types"
import { WorkflowsModuleService } from "@services"
import loadUtils from "./loaders/utils"
const service = WorkflowsModuleService
const loaders = [loadUtils]
export const moduleDefinition: ModuleExports = {
service,
loaders,
}

View File

@@ -2,7 +2,6 @@ import {
Context,
DAL,
InternalModuleDeclaration,
ModuleJoinerConfig,
ModulesSdkTypes,
WorkflowsSdkTypes,
} from "@medusajs/types"
@@ -17,7 +16,6 @@ import type {
} from "@medusajs/workflows-sdk"
import { WorkflowExecution } from "@models"
import { WorkflowOrchestratorService } from "@services"
import { joinerConfig } from "../joiner-config"
type InjectedDependencies = {
baseRepository: DAL.RepositoryService
@@ -50,10 +48,6 @@ export class WorkflowsModuleService<
this.workflowOrchestratorService_ = workflowOrchestratorService
}
__joinerConfig(): ModuleJoinerConfig {
return joinerConfig
}
@InjectSharedContext()
async run<TWorkflow extends string | ReturnWorkflow<any, any, any>>(
workflowIdOrWorkflow: TWorkflow,