Skip to content

fix(medusa): Query Config update Order By filter #12781

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 24, 2025

Conversation

juanzgc
Copy link
Contributor

@juanzgc juanzgc commented Jun 19, 2025

What
Fixed a bug in the prepareListQuery function where nested field ordering was not properly building the expected nested object structure. The function was returning flat objects like { "employee.first_name": "ASC" } instead of the correct nested structure { "employee": { "first_name": "ASC" } }.

Why
The buildOrder function is designed to create nested objects from dot-notation field paths, which is essential for proper query building in the Medusa framework. When this functionality was broken, it prevented correct ordering of related fields and caused queries to fail or return unexpected results.

How

  • Root cause: The prepareListQuery function was not properly utilizing the buildOrder utility function to transform dot-notation field paths into nested objects
  • Before: order = "employee.first_name" → { "employee.first_name": "ASC" }
  • After: order = "employee.first_name" → { "employee": { "first_name": "ASC" } }
  • Added comprehensive tests: Created detailed unit tests for the prepareListQuery function focusing on buildOrder functionality, covering various scenarios including:
    • Simple ascending/descending order
    • Nested field ordering (e.g., product.title)
    • Deeply nested ordering (e.g., product.variants.prices.amount)
    • Multiple nesting levels (up to 5 levels deep)
  • Added integration tests: Created integration tests in product.spec.ts to verify the full end-to-end functionality of nested ordering with variant titles

The fix ensures that the buildOrder function properly transforms dot-notation field paths into the expected nested object structure, enabling correct query building for related field ordering throughout the Medusa framework.

Resolves SUP-1868

@juanzgc juanzgc requested a review from a team as a code owner June 19, 2025 19:47
Copy link

changeset-bot bot commented Jun 19, 2025

⚠️ No Changeset found

Latest commit: 152c8fe

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link

vercel bot commented Jun 19, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
medusa-dashboard ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 24, 2025 3:37pm
8 Skipped Deployments
Name Status Preview Comments Updated (UTC)
api-reference ⬜️ Ignored (Inspect) Jun 24, 2025 3:37pm
api-reference-v2 ⬜️ Ignored (Inspect) Visit Preview Jun 24, 2025 3:37pm
cloud-docs ⬜️ Ignored (Inspect) Visit Preview Jun 24, 2025 3:37pm
docs-ui ⬜️ Ignored (Inspect) Visit Preview Jun 24, 2025 3:37pm
docs-v2 ⬜️ Ignored (Inspect) Visit Preview Jun 24, 2025 3:37pm
medusa-docs ⬜️ Ignored (Inspect) Visit Preview Jun 24, 2025 3:37pm
resources-docs ⬜️ Ignored (Inspect) Visit Preview Jun 24, 2025 3:37pm
user-guide ⬜️ Ignored (Inspect) Visit Preview Jun 24, 2025 3:37pm

Copy link
Member

@adrien2p adrien2p left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, do you know why the yarn lock changed?

**What**
Fixed a bug in the prepareListQuery function where nested field ordering was not properly building the expected nested object structure. The function was returning flat objects like { "employee.first_name": "ASC" } instead of the correct nested structure { "employee": { "first_name": "ASC" } }.

**Why**
The buildOrder function is designed to create nested objects from dot-notation field paths, which is essential for proper query building in the Medusa framework. When this functionality was broken, it prevented correct ordering of related fields and caused queries to fail or return unexpected results.

**How**
- Root cause: The prepareListQuery function was not properly utilizing the buildOrder utility function to transform dot-notation field paths into nested objects
- Before: order = "employee.first_name" → { "employee.first_name": "ASC" }
- After: order = "employee.first_name" → { "employee": { "first_name": "ASC" } }
- Added comprehensive tests: Created detailed unit tests for the prepareListQuery function focusing on buildOrder functionality, covering various scenarios including:
  - Simple ascending/descending order
  - Nested field ordering (e.g., product.title)
  - Deeply nested ordering (e.g., product.variants.prices.amount)
  - Multiple nesting levels (up to 5 levels deep)
- Added integration tests: Created integration tests in product.spec.ts to verify the full end-to-end functionality of nested ordering with variant titles

The fix ensures that the buildOrder function properly transforms dot-notation field paths into the expected nested object structure, enabling correct query building for related field ordering throughout the Medusa framework.

Resolves SUP-1868
@juanzgc
Copy link
Contributor Author

juanzgc commented Jun 20, 2025

@adrien2p increased the following package version:

    "compression": "^1.7.5",

Since there was a mismatch with another dependency

@juanzgc
Copy link
Contributor Author

juanzgc commented Jun 20, 2025

/snapshot-this

2 similar comments
@olivermrbl
Copy link
Contributor

/snapshot-this

@juanzgc
Copy link
Contributor Author

juanzgc commented Jun 20, 2025

/snapshot-this

Copy link
Contributor

🚀 A snapshot release has been made for this PR

Test the snapshots by updating your package.json with the newly published versions:

yarn add @medusajs/admin-bundler@2.8.5-snapshot-20250620191520
yarn add @medusajs/admin-sdk@2.8.5-snapshot-20250620191520
yarn add @medusajs/admin-shared@2.8.5-snapshot-20250620191520
yarn add @medusajs/admin-vite-plugin@2.8.5-snapshot-20250620191520
yarn add @medusajs/dashboard@2.8.5-snapshot-20250620191520
yarn add create-medusa-app@2.8.5-snapshot-20250620191520
yarn add @medusajs/cli@2.8.5-snapshot-20250620191520
yarn add medusa-dev-cli@2.8.5-snapshot-20250620191520
yarn add @medusajs/medusa-oas-cli@2.8.5-snapshot-20250620191520
yarn add @medusajs/core-flows@2.8.5-snapshot-20250620191520
yarn add @medusajs/framework@2.8.5-snapshot-20250620191520
yarn add @medusajs/js-sdk@2.8.5-snapshot-20250620191520
yarn add @medusajs/modules-sdk@2.8.5-snapshot-20250620191520
yarn add @medusajs/orchestration@2.8.5-snapshot-20250620191520
yarn add @medusajs/types@2.8.5-snapshot-20250620191520
yarn add @medusajs/utils@2.8.5-snapshot-20250620191520
yarn add @medusajs/workflows-sdk@2.8.5-snapshot-20250620191520
yarn add @medusajs/icons@2.8.5-snapshot-20250620191520
yarn add @medusajs/ui@4.0.15-snapshot-20250620191520
yarn add @medusajs/ui-preset@2.8.5-snapshot-20250620191520
yarn add @medusajs/medusa@2.8.5-snapshot-20250620191520
yarn add @medusajs/telemetry@2.8.5-snapshot-20250620191520
yarn add @medusajs/test-utils@2.8.5-snapshot-20250620191520
yarn add @medusajs/analytics@2.8.5-snapshot-20250620191520
yarn add @medusajs/api-key@2.8.5-snapshot-20250620191520
yarn add @medusajs/auth@2.8.5-snapshot-20250620191520
yarn add @medusajs/cache-inmemory@2.8.5-snapshot-20250620191520
yarn add @medusajs/cache-redis@2.8.5-snapshot-20250620191520
yarn add @medusajs/cart@2.8.5-snapshot-20250620191520
yarn add @medusajs/currency@2.8.5-snapshot-20250620191520
yarn add @medusajs/customer@2.8.5-snapshot-20250620191520
yarn add @medusajs/event-bus-local@2.8.5-snapshot-20250620191520
yarn add @medusajs/event-bus-redis@2.8.5-snapshot-20250620191520
yarn add @medusajs/file@2.8.5-snapshot-20250620191520
yarn add @medusajs/fulfillment@2.8.5-snapshot-20250620191520
yarn add @medusajs/index@2.8.5-snapshot-20250620191520
yarn add @medusajs/inventory@2.8.5-snapshot-20250620191520
yarn add @medusajs/link-modules@2.8.5-snapshot-20250620191520
yarn add @medusajs/locking@2.8.5-snapshot-20250620191520
yarn add @medusajs/notification@2.8.5-snapshot-20250620191520
yarn add @medusajs/order@2.8.5-snapshot-20250620191520
yarn add @medusajs/payment@2.8.5-snapshot-20250620191520
yarn add @medusajs/pricing@2.8.5-snapshot-20250620191520
yarn add @medusajs/product@2.8.5-snapshot-20250620191520
yarn add @medusajs/promotion@2.8.5-snapshot-20250620191520
yarn add @medusajs/analytics-local@2.8.5-snapshot-20250620191520
yarn add @medusajs/analytics-posthog@2.8.5-snapshot-20250620191520
yarn add @medusajs/auth-emailpass@2.8.5-snapshot-20250620191520
yarn add @medusajs/auth-github@2.8.5-snapshot-20250620191520
yarn add @medusajs/auth-google@2.8.5-snapshot-20250620191520
yarn add @medusajs/file-local@2.8.5-snapshot-20250620191520
yarn add @medusajs/file-s3@2.8.5-snapshot-20250620191520
yarn add @medusajs/fulfillment-manual@2.8.5-snapshot-20250620191520
yarn add @medusajs/locking-postgres@2.8.5-snapshot-20250620191520
yarn add @medusajs/locking-redis@2.8.5-snapshot-20250620191520
yarn add @medusajs/notification-local@2.8.5-snapshot-20250620191520
yarn add @medusajs/notification-sendgrid@2.8.5-snapshot-20250620191520
yarn add @medusajs/payment-stripe@2.8.5-snapshot-20250620191520
yarn add @medusajs/region@2.8.5-snapshot-20250620191520
yarn add @medusajs/sales-channel@2.8.5-snapshot-20250620191520
yarn add @medusajs/stock-location@2.8.5-snapshot-20250620191520
yarn add @medusajs/store@2.8.5-snapshot-20250620191520
yarn add @medusajs/tax@2.8.5-snapshot-20250620191520
yarn add @medusajs/user@2.8.5-snapshot-20250620191520
yarn add @medusajs/workflow-engine-inmemory@2.8.5-snapshot-20250620191520
yarn add @medusajs/workflow-engine-redis@2.8.5-snapshot-20250620191520

Latest commit: a263d88

@kodiakhq kodiakhq bot merged commit 3826bde into develop Jun 24, 2025
26 checks passed
@kodiakhq kodiakhq bot deleted the fix/graph-query-order-filter branch June 24, 2025 15:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants