-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Enhance Shopify order queries with complete order data including line items #17611
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
base: master
Are you sure you want to change the base?
Conversation
… items - Updated GET_ORDER query to include comprehensive order information: - Complete line items with product and variant details - Shipping and billing addresses - Fulfillment tracking information - Payment transactions and refunds - Tax lines and discount allocations - All financial breakdowns (subtotal, shipping, tax, discounts) - Updated LIST_ORDERS query to include: - Line items with product information - Order status and fulfillment details - Customer and shipping information - Essential financial data This provides complete order data including all items, customer info, shipping details, and fulfillment tracking when retrieving orders.
@seynadio is attempting to deploy a commit to the Pipedreamers Team on Vercel. A member of the Team first needs to authorize it. |
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Skipped Deployment
|
WalkthroughThe GraphQL queries related to Shopify orders were extensively revised. The Changes
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
components/shopify_developer_app/common/queries.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs ✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Thank you so much for submitting this! We've added it to our backlog to review, and our team has been notified. |
Thanks for submitting this PR! When we review PRs, we follow the Pipedream component guidelines. If you're not familiar, here's a quick checklist:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (2)
components/shopify_developer_app/common/queries.mjs (2)
1-468
: Consider performance implications of the expanded query.The
GET_ORDER
query now fetches comprehensive order data with multiple levels of nested fields and pagination. This could lead to:
- Increased response times for orders with many line items, fulfillments, or transactions
- Higher memory usage and potential timeouts
- Unnecessary data transfer if all fields aren't always needed
Consider implementing field selection based on specific use cases or creating multiple focused queries for different scenarios.
624-624
: Inconsistent line items limit between queries.The
LIST_ORDERS
query fetches only 50 line items per order whileGET_ORDER
fetches 250. This inconsistency might cause confusion. If this is intentional for performance reasons in list views, consider adding a comment to document this decision.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
components/shopify_developer_app/common/queries.mjs
(4 hunks)
🔇 Additional comments (2)
components/shopify_developer_app/common/queries.mjs (2)
25-89
: Well-structured money amount fields.The consistent implementation of price sets with both
shopMoney
andpresentmentMoney
throughout the queries is excellent. This ensures proper multi-currency support across all monetary values.Also applies to: 162-193, 284-317, 359-368, 388-397, 413-432, 441-450, 554-593, 633-642
2-2
: Update usages for renamed GetOrder queryThe GraphQL query has been renamed from
SuggestedRefund
toGetOrder
. There is no$refundLineItems
variable—refundLineItems
remains a nested field in the query, not a removed parameter.Our
rg
search over.js
,.ts
, and.mjs
files found:
- No occurrences of
SuggestedRefund
- No references to a
$refundLineItems
variablePlease verify:
- Any code (including
.svelte
,.vue
, backend services, tests, etc.) importing or invoking the oldSuggestedRefund
query is updated toGetOrder
- The new GraphQL variables (
$id
,$first
,$after
) are passed correctly where this query is used
lineItems(first: 50) { | ||
edges { | ||
node { | ||
id | ||
title | ||
quantity | ||
variantTitle | ||
vendor | ||
fulfillmentStatus | ||
originalUnitPriceSet { | ||
shopMoney { | ||
amount | ||
currencyCode | ||
} | ||
presentmentMoney { | ||
amount | ||
currencyCode | ||
} | ||
} | ||
variant { | ||
id | ||
title | ||
sku | ||
price | ||
image { | ||
url | ||
altText | ||
} | ||
} | ||
product { | ||
id | ||
title | ||
handle | ||
vendor | ||
productType | ||
images(first: 1) { | ||
edges { | ||
node { | ||
url | ||
altText | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing pagination info for line items.
The line items field doesn't include pageInfo
, making it impossible to know if there are more items beyond the first 50. This could lead to incomplete data display.
Add pageInfo to the line items query:
lineItems(first: 50) {
edges {
node {
// ... existing fields
}
}
+ pageInfo {
+ hasNextPage
+ endCursor
+ }
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
lineItems(first: 50) { | |
edges { | |
node { | |
id | |
title | |
quantity | |
variantTitle | |
vendor | |
fulfillmentStatus | |
originalUnitPriceSet { | |
shopMoney { | |
amount | |
currencyCode | |
} | |
presentmentMoney { | |
amount | |
currencyCode | |
} | |
} | |
variant { | |
id | |
title | |
sku | |
price | |
image { | |
url | |
altText | |
} | |
} | |
product { | |
id | |
title | |
handle | |
vendor | |
productType | |
images(first: 1) { | |
edges { | |
node { | |
url | |
altText | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
lineItems(first: 50) { | |
edges { | |
node { | |
id | |
title | |
quantity | |
variantTitle | |
vendor | |
fulfillmentStatus | |
originalUnitPriceSet { | |
shopMoney { | |
amount | |
currencyCode | |
} | |
presentmentMoney { | |
amount | |
currencyCode | |
} | |
} | |
variant { | |
id | |
title | |
sku | |
price | |
image { | |
url | |
altText | |
} | |
} | |
product { | |
id | |
title | |
handle | |
vendor | |
productType | |
images(first: 1) { | |
edges { | |
node { | |
url | |
altText | |
} | |
} | |
} | |
} | |
} | |
} | |
pageInfo { | |
hasNextPage | |
endCursor | |
} | |
} |
🤖 Prompt for AI Agents
In components/shopify_developer_app/common/queries.mjs around lines 624 to 670,
the lineItems query is missing the pageInfo field, which is necessary to
determine if more items exist beyond the first 50. Add the pageInfo field inside
lineItems with the subfields hasNextPage and hasPreviousPage to enable proper
pagination handling.
metafields (first: $first, after: $after) { | ||
nodes { | ||
id | ||
key | ||
namespace | ||
value | ||
type | ||
} | ||
pageInfo { | ||
endCursor | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Pagination parameters are reused for nested metafields.
The $first
and $after
parameters are being reused for both the main query and the nested metafields pagination. This prevents independent pagination of metafields and could lead to unexpected behavior.
Consider using separate parameters for metafields pagination:
- query GetOrder($id: ID!, $first: Int, $after: String) {
+ query GetOrder($id: ID!, $metafieldsFirst: Int, $metafieldsAfter: String) {
And update the metafields section:
- metafields (first: $first, after: $after) {
+ metafields (first: $metafieldsFirst, after: $metafieldsAfter) {
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
metafields (first: $first, after: $after) { | |
nodes { | |
id | |
key | |
namespace | |
value | |
type | |
} | |
pageInfo { | |
endCursor | |
} | |
} | |
// Change the query signature to use separate pagination variables for metafields | |
query GetOrder($id: ID!, $metafieldsFirst: Int, $metafieldsAfter: String) { | |
order(id: $id) { | |
// … other order fields … | |
// Update metafields to use the new variables | |
metafields(first: $metafieldsFirst, after: $metafieldsAfter) { | |
nodes { | |
id | |
key | |
namespace | |
value | |
type | |
} | |
pageInfo { | |
endCursor | |
} | |
} | |
// … any further fields … | |
} | |
} |
🤖 Prompt for AI Agents
In components/shopify_developer_app/common/queries.mjs around lines 454 to 465,
the pagination parameters $first and $after are reused for both the main query
and the nested metafields, causing pagination conflicts. To fix this, define
separate variables for metafields pagination (e.g., $metafieldsFirst and
$metafieldsAfter) and update the metafields field to use these new parameters
instead of the main query's $first and $after.
Summary
Summary by CodeRabbit
New Features
Improvements