48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import { MedusaContainer } from "@medusajs/types"
|
|
import {
|
|
ContainerRegistrationKeys,
|
|
isString,
|
|
remoteQueryObjectFromString,
|
|
} from "@medusajs/utils"
|
|
|
|
export const refetchEntities = async (
|
|
entryPoint: string,
|
|
idOrFilter: string | object,
|
|
scope: MedusaContainer,
|
|
fields: string[],
|
|
pagination: object = {}
|
|
) => {
|
|
const remoteQuery = scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
|
|
const filters = isString(idOrFilter) ? { id: idOrFilter } : idOrFilter
|
|
let context: object = {}
|
|
|
|
if ("context" in filters) {
|
|
if (filters.context) {
|
|
context = filters.context!
|
|
}
|
|
|
|
delete filters.context
|
|
}
|
|
|
|
let variables = { filters, ...context, ...pagination }
|
|
|
|
const queryObject = remoteQueryObjectFromString({
|
|
entryPoint,
|
|
variables,
|
|
fields,
|
|
})
|
|
|
|
return await remoteQuery(queryObject)
|
|
}
|
|
|
|
export const refetchEntity = async (
|
|
entryPoint: string,
|
|
idOrFilter: string | object,
|
|
scope: MedusaContainer,
|
|
fields: string[]
|
|
) => {
|
|
const [entity] = await refetchEntities(entryPoint, idOrFilter, scope, fields)
|
|
|
|
return entity
|
|
}
|