chore: return meta information on created/updated/deleted object from upsertWithReplace (#7616)

**What**
- Return the updated/deleted/created entities from the upsert with replace according to the configuration

This will help to emit the events from the product module as it rely on this abstraction in many places
This commit is contained in:
Adrien de Peretti
2024-06-05 22:04:45 +02:00
committed by GitHub
parent 8387c72e96
commit da3837f2bc
7 changed files with 388 additions and 114 deletions

View File

@@ -5,6 +5,7 @@ import {
FilterQuery as InternalFilterQuery,
FindConfig,
ModulesSdkTypes,
PerformedActions,
UpsertWithReplaceConfig,
} from "@medusajs/types"
import { EntitySchema } from "@mikro-orm/core"
@@ -493,12 +494,12 @@ export function internalModuleServiceFactory<
data: any[],
config?: UpsertWithReplaceConfig<TEntity>,
sharedContext?: Context
): Promise<TEntity[]>
): Promise<{ entities: TEntity[]; performedActions: PerformedActions }>
upsertWithReplace(
data: any,
config?: UpsertWithReplaceConfig<TEntity>,
sharedContext?: Context
): Promise<TEntity>
): Promise<{ entities: TEntity; performedActions: PerformedActions }>
@InjectTransactionManager(propertyRepositoryName)
async upsertWithReplace(
@@ -507,14 +508,18 @@ export function internalModuleServiceFactory<
relations: [],
},
@MedusaContext() sharedContext: Context = {}
): Promise<TEntity | TEntity[]> {
): Promise<{
entities: TEntity | TEntity[]
performedActions: PerformedActions
}> {
const data_ = Array.isArray(data) ? data : [data]
const entities = await this[propertyRepositoryName].upsertWithReplace(
data_,
config,
sharedContext
)
return Array.isArray(data) ? entities : entities[0]
const { entities, performedActions } = await this[
propertyRepositoryName
].upsertWithReplace(data_, config, sharedContext)
return {
entities: Array.isArray(data) ? entities : entities[0],
performedActions,
}
}
}