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

@@ -11,9 +11,11 @@ import {
} from "@medusajs/types"
import {
ContainerRegistrationKeys,
createMedusaContainer,
Module,
Modules,
TransactionHandlerType,
TransactionStepState,
createMedusaContainer,
} from "@medusajs/utils"
import { asValue } from "awilix"
import { knex } from "knex"
@@ -21,6 +23,7 @@ import { setTimeout } from "timers/promises"
import "../__fixtures__"
import { createScheduled } from "../__fixtures__/workflow_scheduled"
import { DB_URL, TestDatabase } from "../utils"
import { WorkflowsModuleService } from "@medusajs/workflow-engine-inmemory/dist/services"
jest.setTimeout(100000)
@@ -78,6 +81,29 @@ describe("Workflow Orchestrator module", function () {
workflowOrcModule = modules.workflows as unknown as IWorkflowEngineService
})
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",
},
},
})
})
describe("Testing basic workflow", function () {
afterEach(afterEach_)

View File

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

View File

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

View File

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

View File

@@ -1,12 +0,0 @@
import { ModuleExports } from "@medusajs/types"
import { WorkflowsModuleService } from "@services"
import redisConnection from "./loaders/redis"
import loadUtils from "./loaders/utils"
const service = WorkflowsModuleService
const loaders = [loadUtils, redisConnection] as any
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
@@ -54,10 +52,6 @@ export class WorkflowsModuleService<
this.redisDisconnectHandler_ = redisDisconnectHandler
}
__joinerConfig(): ModuleJoinerConfig {
return joinerConfig
}
__hooks = {
onApplicationShutdown: async () => {
await this.workflowOrchestratorService_.onApplicationShutdown()