feat(orchestration,core-flows,medusa,product,types,utils): product import/export uses workflows (#5811)

This commit is contained in:
Riqwan Thamir
2023-12-12 12:09:25 +00:00
committed by GitHub
parent 6f96ced40f
commit 07107f3565
30 changed files with 1601 additions and 357 deletions
@@ -1,9 +1,9 @@
import { Context, LoadedModule, MedusaContainer } from "@medusajs/types"
import { WorkflowDefinition, WorkflowManager } from "./workflow-manager"
import { createContainerLike, createMedusaContainer } from "@medusajs/utils"
import { asValue } from "awilix"
import { DistributedTransaction } from "../transaction"
import { asValue } from "awilix"
import { createMedusaContainer } from "@medusajs/utils"
import { WorkflowDefinition, WorkflowManager } from "./workflow-manager"
export class GlobalWorkflow extends WorkflowManager {
protected static workflows: Map<string, WorkflowDefinition> = new Map()
@@ -16,17 +16,17 @@ export class GlobalWorkflow extends WorkflowManager {
) {
super()
const container = createMedusaContainer()
let container
// Medusa container
if (!Array.isArray(modulesLoaded) && modulesLoaded) {
const cradle = modulesLoaded.cradle
for (const key in cradle) {
container.register(key, asValue(cradle[key]))
if (!("cradle" in modulesLoaded)) {
container = createContainerLike(modulesLoaded)
} else {
container = modulesLoaded
}
}
// Array of modules
else if (modulesLoaded?.length) {
} else if (Array.isArray(modulesLoaded) && modulesLoaded.length) {
container = createMedusaContainer()
for (const mod of modulesLoaded) {
const registrationName = mod.__definition.registrationName
container.register(registrationName, asValue(mod))
@@ -1,5 +1,5 @@
import { Context, LoadedModule, MedusaContainer } from "@medusajs/types"
import { createMedusaContainer } from "@medusajs/utils"
import { createContainerLike, createMedusaContainer } from "@medusajs/utils"
import { asValue } from "awilix"
import {
DistributedTransaction,
@@ -27,7 +27,7 @@ export class LocalWorkflow {
constructor(
workflowId: string,
modulesLoaded?: LoadedModule[] | MedusaContainer
modulesLoaded: LoadedModule[] | MedusaContainer
) {
const globalWorkflow = WorkflowManager.getWorkflow(workflowId)
if (!globalWorkflow) {
@@ -39,17 +39,17 @@ export class LocalWorkflow {
this.workflow = globalWorkflow
this.handlers = new Map(globalWorkflow.handlers_)
const container = createMedusaContainer()
let container
// Medusa container
if (!Array.isArray(modulesLoaded) && modulesLoaded) {
const cradle = modulesLoaded.cradle
for (const key of Object.keys(cradle ?? {})) {
container.register(key, asValue(cradle[key]))
if (!("cradle" in modulesLoaded)) {
container = createContainerLike(modulesLoaded)
} else {
container = modulesLoaded
}
}
// Array of modules
else if (modulesLoaded?.length) {
} else if (Array.isArray(modulesLoaded) && modulesLoaded.length) {
container = createMedusaContainer()
for (const mod of modulesLoaded) {
const registrationName = mod.__definition.registrationName
container.register(registrationName, asValue(mod))