Merge pull request #12735 from medusajs/fix/graph-query-operators-typing

fix: add operators to RemoteQueryFilters
This commit is contained in:
Pedro Guzman
2025-06-20 11:11:11 +02:00
committed by GitHub
2 changed files with 33 additions and 6 deletions
@@ -1,5 +1,6 @@
import { import {
FilterableStockLocationProps, FilterableStockLocationProps,
RemoteQueryFilters,
StockLocationDTO, StockLocationDTO,
UpdateStockLocationInput, UpdateStockLocationInput,
UpsertStockLocationAddressInput, UpsertStockLocationAddressInput,
@@ -32,10 +33,10 @@ export const updateStockLocationsWorkflowId = "update-stock-locations-workflow"
/** /**
* This workflow updates stock locations matching the specified filters. It's used by the * This workflow updates stock locations matching the specified filters. It's used by the
* [Update Stock Location Admin API Route](https://docs.medusajs.com/api/admin#stock-locations_poststocklocationsid). * [Update Stock Location Admin API Route](https://docs.medusajs.com/api/admin#stock-locations_poststocklocationsid).
* *
* You can use this workflow within your own customizations or custom workflows, allowing you * You can use this workflow within your own customizations or custom workflows, allowing you
* to update stock locations in your custom flows. * to update stock locations in your custom flows.
* *
* @example * @example
* const { result } = await updateStockLocationsWorkflow(container) * const { result } = await updateStockLocationsWorkflow(container)
* .run({ * .run({
@@ -48,9 +49,9 @@ export const updateStockLocationsWorkflowId = "update-stock-locations-workflow"
* } * }
* } * }
* }) * })
* *
* @summary * @summary
* *
* Update stock locations. * Update stock locations.
*/ */
export const updateStockLocationsWorkflow = createWorkflow( export const updateStockLocationsWorkflow = createWorkflow(
@@ -60,7 +61,7 @@ export const updateStockLocationsWorkflow = createWorkflow(
): WorkflowResponse<StockLocationDTO[]> => { ): WorkflowResponse<StockLocationDTO[]> => {
const stockLocationsQuery = useQueryGraphStep({ const stockLocationsQuery = useQueryGraphStep({
entity: "stock_location", entity: "stock_location",
filters: input.selector, filters: input.selector as RemoteQueryFilters<"stock_location">,
fields: ["id", "address.id"], fields: ["id", "address.id"],
}).config({ name: "get-stock-location" }) }).config({ name: "get-stock-location" })
@@ -45,10 +45,16 @@ type ExtractFiltersOperators<
: never : never
} }
type RemoteQueryFilterOperators<T> = {
$or?: (T & RemoteQueryFilterOperators<T>)[]
$and?: (T & RemoteQueryFilterOperators<T>)[]
$not?: T & RemoteQueryFilterOperators<T>
}
/** /**
* Extract all available filters from a remote entry point deeply * Extract all available filters from a remote entry point deeply
*/ */
export type RemoteQueryFilters< export type InternalRemoteQueryFilters<
TEntry extends string, TEntry extends string,
RemoteQueryEntryPointsLevel = RemoteQueryEntryPoints, RemoteQueryEntryPointsLevel = RemoteQueryEntryPoints,
Exclusion extends string[] = [], Exclusion extends string[] = [],
@@ -70,3 +76,23 @@ export type RemoteQueryFilters<
> >
: Record<string, any> : Record<string, any>
: never : never
export type RemoteQueryFilters<
TEntry extends string,
RemoteQueryEntryPointsLevel = RemoteQueryEntryPoints,
Exclusion extends string[] = [],
Lim extends number = Depth[3]
> = RemoteQueryFilterOperators<
InternalRemoteQueryFilters<
TEntry,
RemoteQueryEntryPointsLevel,
Exclusion,
Lim
>
> &
InternalRemoteQueryFilters<
TEntry,
RemoteQueryEntryPointsLevel,
Exclusion,
Lim
>