Add SystemMessageType and Consume Service for Shopify refunds/create Webhook#230
Add SystemMessageType and Consume Service for Shopify refunds/create Webhook#230Prerakghatode wants to merge 2 commits intomainfrom
Conversation
…ume service to extract orderId
Summary of ChangesHello @Prerakghatode, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request establishes the foundational components for processing Shopify refund creation webhooks within the system. It introduces a specific system message type and a corresponding consumer service designed to ingest, parse, and act upon these refund events, thereby integrating Shopify's refund notifications into the internal workflow. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new SystemMessageType and a consumer service to handle Shopify's refunds/create webhooks. The implementation is mostly correct, but I've identified a critical issue where the consumer service is misconfigured and would not be invoked. Additionally, there are a couple of medium-severity issues in the new service related to a redundant database query and an unresolved todo comment that should be addressed for better code quality and maintainability.
service/co/hotwax/shopify/system/ShopifySystemMessageServices.xml
Outdated
Show resolved
Hide resolved
| <return error="true" message="Refund webhook payload missing order_id. SystemMessageId=${systemMessageId}"/> | ||
| </if> | ||
| <!-- Trigger refund orchestration --> | ||
| <!-- todo: If required transaction="force-new" --> |
There was a problem hiding this comment.
This todo comment should be resolved before merging. Leaving todo comments in the code can lead to technical debt. In this case, transaction="force-new" is likely not needed. Without it, if the create#ShopifyRefunds service call fails, the entire consumer service transaction will roll back, and the system message will be retried, which is typically the desired behavior for message consumers. Please remove this comment.
| <set field="orderId" from="refundPayload.order_id"/> | ||
|
|
||
| <!-- Validate orderId --> | ||
| <if condition="!orderId"> |
There was a problem hiding this comment.
I think this is unnecessary validation.
| </while> | ||
| </actions> | ||
| </service> | ||
| <service verb="consume" noun="ShopifyRefundWebhook" authenticate="anonymous-all" transaction-timeout="600"> |
There was a problem hiding this comment.
i think we should shift this to shopify-oms-bridge component since we are not directly getting data from Shopify here
Closes: #221
Shopify refund webhooks are sent to SQS. NiFi polls the SQS and calls the Moqui REST end-point to consume the webhook payload.
To process these events, a dedicated SystemMessageType and consume service are required to parse the webhook payload, extract the relevant identifiers, and initiate the refund processing workflow.