Skip to content

Commit

Permalink
Merge branch 'develop' into feat/payments
Browse files Browse the repository at this point in the history
  • Loading branch information
olivermrbl authored Aug 20, 2024
2 parents d391df9 + 69830ca commit 8b55130
Show file tree
Hide file tree
Showing 10 changed files with 127 additions and 77 deletions.
3 changes: 3 additions & 0 deletions packages/core/medusa-test-utils/src/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ export function getMikroOrmConfig({
entities: Object.values(mikroOrmEntities),
schema: schema ?? process.env.MEDUSA_DB_SCHEMA,
debug: false,
pool: {
min: 2,
},
migrations: {
pathTs: pathToMigrations,
silent: true,
Expand Down
1 change: 1 addition & 0 deletions packages/core/types/src/workflows-sdk/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ type FlowRunOptions<TData = unknown> = {
context?: Context
resultFrom?: string | string[] | Symbol
throwOnError?: boolean
logOnError?: boolean
events?: Record<string, Function>
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ export async function mikroOrmCreateConnection(
schemaGenerator: {
disableForeignKeys: false,
},
pool: database.pool as any,
pool: {
min: 2,
...database.pool,
},
})
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export function createPgConnection(options: Options) {
pool: {
// https://knexjs.org/guide/#pool
...(pool ?? {}),
min: (pool?.min as number) ?? 0,
min: (pool?.min as number) ?? 2,
},
})
}
44 changes: 18 additions & 26 deletions packages/core/workflows-sdk/src/helper/type.ts
Original file line number Diff line number Diff line change
@@ -1,47 +1,39 @@
import { Context, LoadedModule, MedusaContainer } from "@medusajs/types"
import {
DistributedTransactionType,
DistributedTransactionEvents,
DistributedTransactionType,
LocalWorkflow,
TransactionStepError,
} from "@medusajs/orchestration"
import { Context, LoadedModule, MedusaContainer } from "@medusajs/types"

export type FlowRunOptions<TData = unknown> = {
input?: TData
type BaseFlowRunOptions = {
context?: Context
resultFrom?: string | string[] | Symbol
throwOnError?: boolean
logOnError?: boolean
events?: DistributedTransactionEvents
container?: LoadedModule[] | MedusaContainer
}

export type FlowRegisterStepSuccessOptions<TData = unknown> = {
idempotencyKey: string
response?: TData
context?: Context
resultFrom?: string | string[] | Symbol
throwOnError?: boolean
events?: DistributedTransactionEvents
container?: LoadedModule[] | MedusaContainer
export type FlowRunOptions<TData = unknown> = BaseFlowRunOptions & {
input?: TData
}

export type FlowRegisterStepFailureOptions<TData = unknown> = {
idempotencyKey: string
response?: TData
context?: Context
resultFrom?: string | string[] | Symbol
throwOnError?: boolean
events?: DistributedTransactionEvents
container?: LoadedModule[] | MedusaContainer
}
export type FlowRegisterStepSuccessOptions<TData = unknown> =
BaseFlowRunOptions & {
idempotencyKey: string
response?: TData
}

export type FlowCancelOptions = {
export type FlowRegisterStepFailureOptions<TData = unknown> =
BaseFlowRunOptions & {
idempotencyKey: string
response?: TData
}

export type FlowCancelOptions = BaseFlowRunOptions & {
transaction?: DistributedTransactionType
transactionId?: string
context?: Context
throwOnError?: boolean
events?: DistributedTransactionEvents
container?: LoadedModule[] | MedusaContainer
}

/**
Expand Down
120 changes: 78 additions & 42 deletions packages/core/workflows-sdk/src/helper/workflow-export.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { MedusaModule } from "@medusajs/modules-sdk"
import {
DistributedTransactionType,
DistributedTransactionEvents,
DistributedTransactionType,
LocalWorkflow,
TransactionHandlerType,
TransactionState,
Expand Down Expand Up @@ -62,6 +62,7 @@ function createContextualWorkflowRunner<
method,
{
throwOnError,
logOnError = false,
resultFrom,
isCancel = false,
container: executionContainer,
Expand All @@ -86,7 +87,7 @@ function createContextualWorkflowRunner<

const { eventGroupId } = context

attachOnFinishReleaseEvents(events, eventGroupId!, flow)
attachOnFinishReleaseEvents(events, eventGroupId!, flow, { logOnError })

const flowMetadata = {
eventGroupId,
Expand Down Expand Up @@ -143,21 +144,18 @@ function createContextualWorkflowRunner<
}
}

const newRun = async (
{
input,
context: outerContext,
throwOnError,
resultFrom,
events,
container,
}: FlowRunOptions = {
throwOnError: true,
resultFrom: defaultResult,
}
) => {
const newRun = async ({
input,
context: outerContext,
throwOnError,
logOnError,
resultFrom,
events,
container,
}: FlowRunOptions = {}) => {
resultFrom ??= defaultResult
throwOnError ??= true
logOnError ??= false

const context = {
...outerContext,
Expand Down Expand Up @@ -185,7 +183,12 @@ function createContextualWorkflowRunner<

return await originalExecution(
originalRun,
{ throwOnError, resultFrom, container },
{
throwOnError,
resultFrom,
container,
logOnError,
},
context.transactionId,
input,
context,
Expand All @@ -200,17 +203,18 @@ function createContextualWorkflowRunner<
idempotencyKey,
context: outerContext,
throwOnError,
logOnError,
resultFrom,
events,
container,
}: FlowRegisterStepSuccessOptions = {
idempotencyKey: "",
throwOnError: true,
resultFrom: defaultResult,
}
) => {
idempotencyKey ??= ""
resultFrom ??= defaultResult
throwOnError ??= true
logOnError ??= false

const [, transactionId] = idempotencyKey.split(":")
const context = {
Expand All @@ -223,7 +227,12 @@ function createContextualWorkflowRunner<

return await originalExecution(
originalRegisterStepSuccess,
{ throwOnError, resultFrom, container },
{
throwOnError,
resultFrom,
container,
logOnError,
},
idempotencyKey,
response,
context,
Expand All @@ -238,17 +247,18 @@ function createContextualWorkflowRunner<
idempotencyKey,
context: outerContext,
throwOnError,
logOnError,
resultFrom,
events,
container,
}: FlowRegisterStepFailureOptions = {
idempotencyKey: "",
throwOnError: true,
resultFrom: defaultResult,
}
) => {
idempotencyKey ??= ""
resultFrom ??= defaultResult
throwOnError ??= true
logOnError ??= false

const [, transactionId] = idempotencyKey.split(":")
const context = {
Expand All @@ -261,7 +271,12 @@ function createContextualWorkflowRunner<

return await originalExecution(
originalRegisterStepFailure,
{ throwOnError, resultFrom, container },
{
throwOnError,
resultFrom,
container,
logOnError,
},
idempotencyKey,
response,
context,
Expand All @@ -270,19 +285,17 @@ function createContextualWorkflowRunner<
}
flow.registerStepFailure = newRegisterStepFailure as any

const newCancel = async (
{
transaction,
transactionId,
context: outerContext,
throwOnError,
events,
container,
}: FlowCancelOptions = {
throwOnError: true,
}
) => {
const newCancel = async ({
transaction,
transactionId,
context: outerContext,
throwOnError,
logOnError,
events,
container,
}: FlowCancelOptions = {}) => {
throwOnError ??= true
logOnError ??= false

const context = {
...outerContext,
Expand All @@ -299,6 +312,7 @@ function createContextualWorkflowRunner<
resultFrom: undefined,
isCancel: true,
container,
logOnError,
},
transaction ?? transactionId!,
undefined,
Expand Down Expand Up @@ -478,7 +492,12 @@ export const exportWorkflow = <TData = unknown, TResult = unknown>(
function attachOnFinishReleaseEvents(
events: DistributedTransactionEvents = {},
eventGroupId: string,
flow: LocalWorkflow
flow: LocalWorkflow,
{
logOnError,
}: {
logOnError?: boolean
} = {}
) {
const onFinish = events.onFinish

Expand All @@ -487,6 +506,30 @@ function attachOnFinishReleaseEvents(
result?: unknown
errors?: unknown[]
}) => {
const { transaction } = args

const logger =
(flow.container as MedusaContainer).resolve(
ContainerRegistrationKeys.LOGGER,
{ allowUnregistered: true }
) || console

if (logOnError) {
const TERMINAL_SIZE = process.stdout?.columns ?? 60
const separator = new Array(TERMINAL_SIZE).join("-")

const worflowName = transaction.getFlow().modelId
const allWorkflowErrors = transaction
.getErrors()
.map(
(err) =>
`${worflowName}:${err?.action}:${err?.handlerType} - ${err?.error?.message}${EOL}${err?.error?.stack}`
)
.join(EOL + separator + EOL)

logger.error(allWorkflowErrors)
}

await onFinish?.(args)

const eventBusService = (flow.container as MedusaContainer).resolve(
Expand All @@ -498,13 +541,6 @@ function attachOnFinishReleaseEvents(
return
}

const logger =
(flow.container as MedusaContainer).resolve(
ContainerRegistrationKeys.LOGGER,
{ allowUnregistered: true }
) || console

const { transaction } = args
const failedStatus = [TransactionState.FAILED, TransactionState.REVERTED]

if (failedStatus.includes(transaction.getState())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export function pgConnectionLoader(): ReturnType<
configModule.projectConfig.databaseDriverOptions || {}
const schema = configModule.projectConfig.databaseSchema || "public"
const idleTimeoutMillis = driverOptions.pool?.idleTimeoutMillis ?? undefined // prevent null to be passed
const poolMin = driverOptions.pool?.min ?? 2
const poolMax = driverOptions.pool?.max

delete driverOptions.pool
Expand All @@ -32,6 +33,7 @@ export function pgConnectionLoader(): ReturnType<
schema,
driverOptions,
pool: {
min: poolMin,
max: poolMax,
idleTimeoutMillis,
},
Expand Down
Loading

0 comments on commit 8b55130

Please sign in to comment.