@devx-commerce/plugin-gati 0.0.34 → 0.0.35-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/.medusa/server/src/api/admin/masters/[master]/[id]/route.js +121 -0
  2. package/.medusa/server/src/api/admin/masters/[master]/route.js +33 -0
  3. package/.medusa/server/src/api/admin/masters/middlewares.js +35 -0
  4. package/.medusa/server/src/api/admin/masters/query-config.js +14 -0
  5. package/.medusa/server/src/api/admin/masters/search-middleware.js +16 -0
  6. package/.medusa/server/src/api/admin/masters/utils.js +108 -0
  7. package/.medusa/server/src/api/admin/masters/validators.js +28 -0
  8. package/.medusa/server/src/api/admin/middlewares.js +6 -2
  9. package/.medusa/server/src/api/admin/variant-options/recalculate/route.js +446 -0
  10. package/.medusa/server/src/api/admin/variant-options/sync/route.js +329 -0
  11. package/.medusa/server/src/api/erp/webhook/config.js +37 -6
  12. package/.medusa/server/src/api/erp/webhook/route.js +10 -137
  13. package/.medusa/server/src/api/middlewares.js +3 -1
  14. package/.medusa/server/src/api/pos/gold-rate/middleware.js +13 -0
  15. package/.medusa/server/src/api/pos/gold-rate/route.js +96 -0
  16. package/.medusa/server/src/api/pos/middleware.js +13 -0
  17. package/.medusa/server/src/api/store/gold-rate/current/route.js +70 -0
  18. package/.medusa/server/src/api/store/gold-rate/historical/route.js +108 -0
  19. package/.medusa/server/src/api/store/gold-rate/middleware.js +19 -0
  20. package/.medusa/server/src/api/store/gold-rate/validators.js +37 -0
  21. package/.medusa/server/src/api/store/middleware.js +3 -1
  22. package/.medusa/server/src/jobs/process-erp-events.js +205 -0
  23. package/.medusa/server/src/jobs/process-variant-option-sync.js +536 -0
  24. package/.medusa/server/src/jobs/sync-order-erp.js +2 -2
  25. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +14 -0
  26. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +14 -0
  27. package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +14 -0
  28. package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +14 -0
  29. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +14 -0
  30. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +14 -0
  31. package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +14 -0
  32. package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +14 -0
  33. package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +14 -0
  34. package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +14 -0
  35. package/.medusa/server/src/modules/erp/service.js +59 -1
  36. package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +14 -0
  37. package/.medusa/server/src/modules/extended-product/migrations/Migration20251119062526.js +16 -0
  38. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202055742.js +14 -0
  39. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202064200.js +16 -0
  40. package/.medusa/server/src/modules/extended-product/models/extended-product.js +89 -9
  41. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251119063328.js +20 -0
  42. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120045708.js +14 -0
  43. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120051832.js +14 -0
  44. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120052514.js +14 -0
  45. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251202055952.js +14 -0
  46. package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +145 -12
  47. package/.medusa/server/src/modules/item-size-master/index.js +13 -0
  48. package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +17 -0
  49. package/.medusa/server/src/modules/item-size-master/models/item-size-master.js +14 -0
  50. package/.medusa/server/src/modules/item-size-master/service.js +10 -0
  51. package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +14 -0
  52. package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +14 -0
  53. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +14 -0
  54. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +14 -0
  55. package/.medusa/server/src/modules/quality-master/index.js +13 -0
  56. package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +16 -0
  57. package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +14 -0
  58. package/.medusa/server/src/modules/quality-master/models/quality-master.js +17 -0
  59. package/.medusa/server/src/modules/quality-master/service.js +10 -0
  60. package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +14 -0
  61. package/.medusa/server/src/modules/raw-master/models/raw-master.js +2 -1
  62. package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +14 -0
  63. package/.medusa/server/src/modules/shape-master/models/shape-master.js +2 -1
  64. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +14 -0
  65. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +14 -0
  66. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251203083315.js +16 -0
  67. package/.medusa/server/src/modules/shipping-info-master/models/shipping-info-master.js +2 -2
  68. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +14 -0
  69. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +14 -0
  70. package/.medusa/server/src/modules/tone-master/index.js +13 -0
  71. package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +16 -0
  72. package/.medusa/server/src/modules/tone-master/models/tone-master.js +15 -0
  73. package/.medusa/server/src/modules/tone-master/service.js +10 -0
  74. package/.medusa/server/src/modules/variant-option-sync-queue/index.js +13 -0
  75. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +19 -0
  76. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +16 -0
  77. package/.medusa/server/src/modules/variant-option-sync-queue/models/variant-option-sync-queue.js +23 -0
  78. package/.medusa/server/src/modules/variant-option-sync-queue/service.js +49 -0
  79. package/.medusa/server/src/subscribers/cutomer-updated.js +2 -1
  80. package/.medusa/server/src/subscribers/party-master.js +35 -34
  81. package/.medusa/server/src/utils/build-redis-key.js +30 -0
  82. package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +39 -2
  83. package/.medusa/server/src/workflows/helpers/product-helper.js +445 -115
  84. package/.medusa/server/src/workflows/helpers/update-variant-option-metadata.js +105 -0
  85. package/.medusa/server/src/workflows/helpers/variant-helper.js +215 -0
  86. package/.medusa/server/src/workflows/hooks/product-updated.js +6 -11
  87. package/.medusa/server/src/workflows/inward-master/helper/index.js +88 -39
  88. package/.medusa/server/src/workflows/inward-master/workflows/update-inward.js +6 -2
  89. package/.medusa/server/src/workflows/item-size-master/create-or-update-item-size-master.js +51 -0
  90. package/.medusa/server/src/workflows/item-size-master/index.js +15 -0
  91. package/.medusa/server/src/workflows/item-size-master/steps/create-item-size.js +21 -0
  92. package/.medusa/server/src/workflows/item-size-master/steps/delete-item-size.js +23 -0
  93. package/.medusa/server/src/workflows/item-size-master/steps/fetch-item-size-master.js +55 -0
  94. package/.medusa/server/src/workflows/item-size-master/steps/update-item-size.js +36 -0
  95. package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +3 -2
  96. package/.medusa/server/src/workflows/orders/utils/order-helper.js +6 -5
  97. package/.medusa/server/src/workflows/orders/workflows/sync-order-to-erp.js +27 -2
  98. package/.medusa/server/src/workflows/party-master/steps/delete-party.js +4 -7
  99. package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +2 -1
  100. package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +2 -50
  101. package/.medusa/server/src/workflows/party-master/workflows/delete-party-master.js +60 -0
  102. package/.medusa/server/src/workflows/party-master/workflows/index.js +2 -1
  103. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +80 -195
  104. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-variant-update.js +448 -0
  105. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +126 -4
  106. package/.medusa/server/src/workflows/quality-master/create-or-update-quality-master.js +58 -0
  107. package/.medusa/server/src/workflows/quality-master/index.js +30 -0
  108. package/.medusa/server/src/workflows/quality-master/steps/create-quality.js +22 -0
  109. package/.medusa/server/src/workflows/quality-master/steps/delete-quality.js +20 -0
  110. package/.medusa/server/src/workflows/quality-master/steps/fetch-quality-master.js +54 -0
  111. package/.medusa/server/src/workflows/quality-master/steps/update-quality.js +37 -0
  112. package/.medusa/server/src/workflows/raw-master/create-or-update-raw-master.js +58 -0
  113. package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +9 -11
  114. package/.medusa/server/src/workflows/shape-master/create-or-update-shape-master.js +53 -0
  115. package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +9 -9
  116. package/.medusa/server/src/workflows/style-master/workflows/create-or-update-style-master.js +2 -2
  117. package/.medusa/server/src/workflows/tone-master/create-or-update-tone-master.js +52 -0
  118. package/.medusa/server/src/workflows/tone-master/index.js +30 -0
  119. package/.medusa/server/src/workflows/tone-master/steps/create-tone.js +22 -0
  120. package/.medusa/server/src/workflows/tone-master/steps/delete-tone.js +20 -0
  121. package/.medusa/server/src/workflows/tone-master/steps/fetch-tone-master.js +54 -0
  122. package/.medusa/server/src/workflows/tone-master/steps/update-tone.js +37 -0
  123. package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +6 -8
  124. package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-status-from-variant.js +9 -3
  125. package/package.json +1 -1
@@ -2,69 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = POST;
4
4
  const framework_1 = require("@medusajs/framework");
5
- const bulk_jobs_task_trigger_1 = require("../../../workflows/bulk-jobs-task-trigger");
6
5
  const workflows_1 = require("../../../workflows/erp-event/workflows");
7
- const update_erp_event_1 = require("../../../workflows/erp-event/workflows/update-erp-event");
8
6
  const config_1 = require("./config");
9
7
  const utils_1 = require("./utils");
10
- // ECS task configuration for different data types
11
- const ECS_TASK_CONFIG = {
12
- StyleMst: {
13
- taskType: "erp-webhook-batch-processing",
14
- batchSize: 200,
15
- enabled: true,
16
- },
17
- PartyStyleMst: {
18
- taskType: "erp-webhook-batch-processing",
19
- batchSize: 200,
20
- enabled: true,
21
- },
22
- Inward: {
23
- taskType: "erp-webhook-batch-processing",
24
- batchSize: 200,
25
- enabled: true,
26
- },
27
- };
28
8
  /**
29
- * Triggers ECS task for StyleMst and PartyStyleMst
30
- */
31
- async function triggerEcsTask(scope, datafor, operation, data, erpEventId) {
32
- const taskConfig = ECS_TASK_CONFIG[datafor];
33
- framework_1.logger.info(`🚀 Triggering ECS task for ${datafor} with ${data.length} items`);
34
- try {
35
- const { result } = await (0, bulk_jobs_task_trigger_1.bulkJobsTaskTriggerWorkflow)(scope).run({
36
- input: {
37
- taskType: taskConfig.taskType,
38
- parameters: {
39
- batchSize: taskConfig.batchSize,
40
- erpEventId, // Pass the ERP event ID
41
- },
42
- },
43
- });
44
- framework_1.logger.info(`✅ ECS task triggered successfully for ${datafor}: ${JSON.stringify(result)}`);
45
- }
46
- catch (error) {
47
- framework_1.logger.error(`❌ Failed to trigger ECS task for ${datafor}:`, error);
48
- throw error; // Throw error since this is the main processing path
49
- }
50
- }
51
- /**
52
- * Processes the webhook request by executing the appropriate workflow
53
- */
54
- async function processWebhookRequest(scope, datafor, operation, data, eventId) {
55
- const workflowConfig = config_1.MASTER_WORKFLOW_CONFIG[datafor];
56
- if (!workflowConfig) {
57
- console.error(`Unsupported datafor type: ${datafor}`);
58
- }
59
- const workflowHandler = workflowConfig[operation];
60
- if (!workflowHandler) {
61
- throw new Error(`Unsupported operation: ${operation} for ${datafor}`);
62
- }
63
- const input = { datafor, operation, data, eventId };
64
- await workflowHandler(scope, input);
65
- }
66
- /**
67
- * Handles the webhook request
9
+ * Handles the webhook request by queuing it in the erp_event table
10
+ * Processing is handled by a cron job that processes events in order
68
11
  */
69
12
  async function POST(req, res) {
70
13
  try {
@@ -75,39 +18,9 @@ async function POST(req, res) {
75
18
  }
76
19
  const { datafor, operation, data } = req.body;
77
20
  // Log the received data
78
- framework_1.logger.info(`Received webhook: ${operation} for ${datafor} with ${data.length} items`);
79
- // Check if there's already a pending event for the same datafor and operation
80
- const query = req.scope.resolve("query");
81
- const existingPendingEvents = await query.graph({
82
- entity: "erp_event",
83
- fields: ["id", "status", "created_at"],
84
- filters: {
85
- datafor,
86
- operation,
87
- status: "pending",
88
- },
89
- pagination: {
90
- take: 1,
91
- order: { created_at: "desc" },
92
- },
93
- });
94
- if (existingPendingEvents.data.length > 0) {
95
- const existingEvent = existingPendingEvents.data[0];
96
- framework_1.logger.warn(`⚠️ Duplicate processing detected! Found existing pending event ${existingEvent.id} for ${datafor} ${operation}. Adding new request in queue.`);
97
- // const erpEvent = await createErpEventWorkflow(req.scope).run({
98
- // input: {
99
- // datafor,
100
- // operation,
101
- // data,
102
- // status: "pending",
103
- // sync_completed_at: null,
104
- // },
105
- // });
106
- (0, utils_1.sendErrorResponse)(res, 409, `Processing already in progress for ${datafor} ${operation}. Event ID: ${existingEvent.id}.`);
107
- return;
108
- }
21
+ framework_1.logger.info(`Received webhook: ${operation} for ${datafor} with ${data.length} items - queuing for processing`);
109
22
  const workflowConfig = config_1.MASTER_WORKFLOW_CONFIG[datafor];
110
- // If unsupported type, record event as completed and return success immediately
23
+ // If unsupported type, record event as completed immediately
111
24
  if (!workflowConfig) {
112
25
  const completedEvent = await (0, workflows_1.createErpEventWorkflow)(req.scope).run({
113
26
  input: {
@@ -118,14 +31,14 @@ async function POST(req, res) {
118
31
  sync_completed_at: new Date(),
119
32
  },
120
33
  });
121
- (0, utils_1.sendSuccessResponse)(res, `Successfully processed ${operation} for ${datafor}`, {
34
+ (0, utils_1.sendSuccessResponse)(res, `Successfully queued ${operation} for ${datafor}`, {
122
35
  processingMode: "skipped",
123
36
  itemCount: data.length,
124
37
  erpEventId: completedEvent.result.id,
125
38
  });
126
39
  return;
127
40
  }
128
- // Always log ERP event first
41
+ // Create ERP event with pending status - will be processed by cron job
129
42
  const erpEvent = await (0, workflows_1.createErpEventWorkflow)(req.scope).run({
130
43
  input: {
131
44
  datafor,
@@ -135,57 +48,17 @@ async function POST(req, res) {
135
48
  sync_completed_at: null,
136
49
  },
137
50
  });
138
- // Check if this is a data type that should use ECS processing
139
- const shouldUseEcsProcessing = [
140
- "StyleMst",
141
- "PartyStyleMst",
142
- "Inward",
143
- ].includes(datafor);
144
- if (shouldUseEcsProcessing && data.length > 100) {
145
- // Update ERP event status to in-progress
146
- await (0, update_erp_event_1.updateErpEventWorkflow)(req.scope).run({
147
- input: {
148
- id: erpEvent.result.id,
149
- status: "in-progress",
150
- sync_completed_at: null,
151
- },
152
- });
153
- // Trigger ECS task for StyleMst and PartyStyleMst
154
- framework_1.logger.info(`📋 Using ECS processing for ${datafor}`);
155
- await triggerEcsTask(req.scope, datafor, operation, data, erpEvent.result.id);
156
- }
157
- else {
158
- framework_1.logger.info(`⚡ Using regular workflow processing for ${datafor}`);
159
- // Update ERP event status to in-progress
160
- await (0, update_erp_event_1.updateErpEventWorkflow)(req.scope).run({
161
- input: {
162
- id: erpEvent.result.id,
163
- status: "in-progress",
164
- sync_completed_at: null,
165
- },
166
- });
167
- // Use regular workflow processing for other data types
168
- await processWebhookRequest(req.scope, datafor, operation, data, erpEvent.result.id);
169
- // Update ERP event status to completed
170
- await (0, update_erp_event_1.updateErpEventWorkflow)(req.scope).run({
171
- input: {
172
- id: erpEvent.result.id,
173
- status: "completed",
174
- sync_completed_at: new Date(),
175
- },
176
- });
177
- }
178
- (0, utils_1.sendSuccessResponse)(res, `Successfully processed ${operation} for ${datafor}`, {
179
- processingMode: shouldUseEcsProcessing && data.length > 100 ? "ecs" : "workflow",
51
+ (0, utils_1.sendSuccessResponse)(res, `Successfully queued ${operation} for ${datafor}`, {
52
+ processingMode: "queued",
180
53
  itemCount: data.length,
181
54
  erpEventId: erpEvent.result.id,
182
55
  });
183
56
  }
184
57
  catch (error) {
185
- framework_1.logger.error("Error processing webhook:", error);
58
+ framework_1.logger.error("Error queuing webhook:", error);
186
59
  // Provide more specific error messages
187
60
  const errorMessage = error instanceof Error ? error.message : "Internal server error";
188
61
  (0, utils_1.sendErrorResponse)(res, 500, errorMessage);
189
62
  }
190
63
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2VycC93ZWJob29rL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0dBLG9CQTJLQztBQS9RRCxtREFBNkM7QUFHN0Msc0ZBQXdGO0FBQ3hGLHNFQUFnRjtBQUNoRiw4RkFBaUc7QUFFakcscUNBQXlFO0FBQ3pFLG1DQUlpQjtBQUVqQixrREFBa0Q7QUFDbEQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLDhCQUE4QjtRQUN4QyxTQUFTLEVBQUUsR0FBRztRQUNkLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxhQUFhLEVBQUU7UUFDYixRQUFRLEVBQUUsOEJBQThCO1FBQ3hDLFNBQVMsRUFBRSxHQUFHO1FBQ2QsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNOLFFBQVEsRUFBRSw4QkFBOEI7UUFDeEMsU0FBUyxFQUFFLEdBQUc7UUFDZCxPQUFPLEVBQUUsSUFBSTtLQUNkO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGNBQWMsQ0FDM0IsS0FBVSxFQUNWLE9BQW1CLEVBQ25CLFNBQW9CLEVBQ3BCLElBQWMsRUFDZCxVQUFrQjtJQUVsQixNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsT0FBdUMsQ0FBQyxDQUFDO0lBRTVFLGtCQUFNLENBQUMsSUFBSSxDQUNULDhCQUE4QixPQUFPLFNBQVMsSUFBSSxDQUFDLE1BQU0sUUFBUSxDQUNsRSxDQUFDO0lBRUYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxvREFBMkIsRUFBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDOUQsS0FBSyxFQUFFO2dCQUNMLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtnQkFDN0IsVUFBVSxFQUFFO29CQUNWLFNBQVMsRUFBRSxV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
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2VycC93ZWJob29rL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0JBLG9CQTZFQztBQTdGRCxtREFBNkM7QUFHN0Msc0VBQWdGO0FBRWhGLHFDQUFrRDtBQUNsRCxtQ0FJaUI7QUFFakI7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxJQUFBLDhCQUFzQixFQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUEseUJBQWlCLEVBQ2YsR0FBRyxFQUNILEdBQUcsRUFDSCw2RkFBNkYsQ0FDOUYsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQXNCLENBQUM7UUFFaEUsd0JBQXdCO1FBQ3hCLGtCQUFNLENBQUMsSUFBSSxDQUNULHFCQUFxQixTQUFTLFFBQVEsT0FBTyxTQUFTLElBQUksQ0FBQyxNQUFNLGlDQUFpQyxDQUNuRyxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsK0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkQsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUEsa0NBQXNCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDakUsS0FBSyxFQUFFO29CQUNMLE9BQU87b0JBQ1AsU0FBUztvQkFDVCxJQUFJO29CQUNKLE1BQU0sRUFBRSxXQUFXO29CQUNuQixpQkFBaUIsRUFBRSxJQUFJLElBQUksRUFBRTtpQkFDOUI7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFBLDJCQUFtQixFQUNqQixHQUFHLEVBQ0gsdUJBQXVCLFNBQVMsUUFBUSxPQUFPLEVBQUUsRUFDakQ7Z0JBQ0UsY0FBYyxFQUFFLFNBQVM7Z0JBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDdEIsVUFBVSxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRTthQUNyQyxDQUNGLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELHVFQUF1RTtRQUN2RSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsa0NBQXNCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMzRCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTztnQkFDUCxTQUFTO2dCQUNULElBQUk7Z0JBQ0osTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLGlCQUFpQixFQUFFLElBQUk7YUFDeEI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFBLDJCQUFtQixFQUNqQixHQUFHLEVBQ0gsdUJBQXVCLFNBQVMsUUFBUSxPQUFPLEVBQUUsRUFDakQ7WUFDRSxjQUFjLEVBQUUsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDdEIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtTQUMvQixDQUNGLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLGtCQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlDLHVDQUF1QztRQUN2QyxNQUFNLFlBQVksR0FDaEIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7UUFFbkUsSUFBQSx5QkFBaUIsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDSCxDQUFDIn0=
@@ -7,11 +7,13 @@ const medusa_1 = require("@medusajs/medusa");
7
7
  const middlewares_1 = __importDefault(require("./admin/middlewares"));
8
8
  const middleware_1 = __importDefault(require("./store/middleware"));
9
9
  const middleware_2 = __importDefault(require("./erp/middleware"));
10
+ const middleware_3 = __importDefault(require("./pos/middleware"));
10
11
  exports.default = (0, medusa_1.defineMiddlewares)({
11
12
  routes: [
12
13
  ...(middlewares_1.default.routes || []),
13
14
  ...(middleware_1.default.routes || []),
14
15
  ...(middleware_2.default.routes || []),
16
+ ...(middleware_3.default.routes || []),
15
17
  ],
16
18
  });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXFEO0FBRXJELHNFQUFtRDtBQUNuRCxvRUFBa0Q7QUFDbEQsa0VBQThDO0FBRTlDLGtCQUFlLElBQUEsMEJBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sR0FBRyxDQUFDLHFCQUFnQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDbEMsR0FBRyxDQUFDLG9CQUFnQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDbEMsR0FBRyxDQUFDLG9CQUFjLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztLQUNqQztDQUNGLENBQUMsQ0FBQyJ9
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXFEO0FBRXJELHNFQUFtRDtBQUNuRCxvRUFBa0Q7QUFDbEQsa0VBQThDO0FBQzlDLGtFQUE4QztBQUU5QyxrQkFBZSxJQUFBLDBCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOLEdBQUcsQ0FBQyxxQkFBZ0IsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2xDLEdBQUcsQ0FBQyxvQkFBZ0IsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2xDLEdBQUcsQ0FBQyxvQkFBYyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDaEMsR0FBRyxDQUFDLG9CQUFjLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztLQUNqQztDQUNGLENBQUMsQ0FBQyJ9
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const http_1 = require("@medusajs/framework/http");
4
+ exports.default = (0, http_1.defineMiddlewares)({
5
+ routes: [
6
+ {
7
+ matcher: "/store/gold-rate",
8
+ method: "GET",
9
+ middlewares: [],
10
+ }
11
+ ],
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL2dvbGQtcmF0ZS9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBRWtDO0FBRWxDLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLEVBQUU7U0FDaEI7S0FDRjtDQUNGLENBQUMsQ0FBQyJ9
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const build_redis_key_1 = require("../../../utils/build-redis-key");
6
+ const api_response_1 = require("../../../lib/api-response");
7
+ const erp_1 = require("../../../modules/erp");
8
+ const GET = async (req, res) => {
9
+ try {
10
+ const grams = 1;
11
+ const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
12
+ const erpService = req.scope.resolve(erp_1.ERP_MODULE);
13
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
14
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
15
+ const cacheKey = (0, build_redis_key_1.buildRedisKey)("gold-rate-pos", { grams });
16
+ const cachedResult = await cacheService.get(cacheKey);
17
+ if (cachedResult) {
18
+ logger.info(`[HISTORICAL-GOLD-RATE] : Returning cached result for grams: ${grams}`);
19
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Historical gold rate fetched successfully"));
20
+ }
21
+ const [quality14Result, quality18Result, quality22Result] = await Promise.all([
22
+ query.graph({
23
+ entity: "quality_master",
24
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
25
+ filters: {
26
+ qly_code: "14",
27
+ },
28
+ }),
29
+ query.graph({
30
+ entity: "quality_master",
31
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
32
+ filters: {
33
+ qly_code: "18",
34
+ },
35
+ }),
36
+ query.graph({
37
+ entity: "quality_master",
38
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
39
+ filters: {
40
+ qly_code: "22",
41
+ },
42
+ }),
43
+ ]);
44
+ const { data: qualityMasters14 } = quality14Result;
45
+ const { data: qualityMasters18 } = quality18Result;
46
+ const { data: qualityMasters22 } = quality22Result;
47
+ const qly14 = qualityMasters14?.[0];
48
+ const qly18 = qualityMasters18?.[0];
49
+ const qly22 = qualityMasters22?.[0];
50
+ if (!qly22?.qly_mfg_clarity ||
51
+ !qly18?.qly_mfg_clarity ||
52
+ !qly14?.qly_mfg_clarity) {
53
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Quality masters for 14/18/22 karat not found or missing qly_mfg_clarity", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
54
+ }
55
+ const goldRateData = (await erpService.getGoldRateData());
56
+ if (!goldRateData?.CurrentGoldRate ||
57
+ goldRateData.CurrentGoldRate.length === 0) {
58
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("No historical gold rate data available from ERP", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
59
+ }
60
+ const purity = ["14", "18", "22", "24"];
61
+ const qlyMap = {
62
+ "14": qly14,
63
+ "18": qly18,
64
+ "22": qly22,
65
+ "24": { qly_mfg_clarity: 100 }, // 24K is always 100% purity
66
+ };
67
+ const currentGoldData = goldRateData.CurrentGoldRate?.find((item) => item.RawName === "GOLD");
68
+ const oldGoldData = goldRateData.CurrentGoldRate?.find((item) => item.RawName === "Old Gold");
69
+ const goldRateList = purity.map((karat) => {
70
+ const qly = qlyMap[karat];
71
+ return {
72
+ rate: `${karat}K`,
73
+ amount: ((currentGoldData?.SaleRate || 0) * qly.qly_mfg_clarity) / 100,
74
+ };
75
+ }).filter(Boolean);
76
+ const oldGoldRateList = purity.map((karat) => {
77
+ const qly = qlyMap[karat];
78
+ return {
79
+ rate: `${karat}K`,
80
+ amount: ((oldGoldData?.SaleRate || 0) * qly.qly_mfg_clarity) / 100,
81
+ };
82
+ }).filter(Boolean);
83
+ const result = {
84
+ currentGoldRateList: goldRateList,
85
+ oldGoldRateList: oldGoldRateList,
86
+ };
87
+ await cacheService.set(cacheKey, result, build_redis_key_1.CACHE_VALIDATION_TIMES.GOLD_RATE);
88
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result, "Historical gold rate fetched successfully"));
89
+ }
90
+ catch (error) {
91
+ console.error("Error fetching historical gold rate:", error);
92
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error instanceof Error ? error.message : "Internal server error", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
93
+ }
94
+ };
95
+ exports.GET = GET;
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9nb2xkLXJhdGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStFO0FBQy9FLG9FQUd3QztBQUN4Qyw0REFNbUM7QUFFbkMsOENBQWdEO0FBMEJ6QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDZixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQVUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLElBQUEsK0JBQWEsRUFBQyxlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRTNELE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDekMsUUFBUSxDQUNULENBQUM7UUFFRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsK0RBQStELEtBQUssRUFBRSxDQUN2RSxDQUFDO1lBQ0YsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUNuQixZQUFZLEVBQ1osMkNBQTJDLENBQzVDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsR0FDdkQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hCLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDN0MsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQztZQUNGLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDN0MsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQztZQUNGLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDN0MsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVMLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFDbkQsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUNuRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsZUFBZSxDQUFDO1FBRW5ELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBDLElBQ0UsQ0FBQyxLQUFLLEVBQUUsZUFBZTtZQUN2QixDQUFDLEtBQUssRUFBRSxlQUFlO1lBQ3ZCLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFDdkIsQ0FBQztZQUNELE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFDakIseUVBQXlFLEVBQ3pFLHlCQUFVLENBQUMsU0FBUyxFQUNwQix3QkFBUyxDQUFDLFNBQVMsQ0FDcEIsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBTSxVQUFVLENBQUMsZUFBZSxFQUFFLENBQWlCLENBQUM7UUFFMUUsSUFDRSxDQUFDLFlBQVksRUFBRSxlQUFlO1lBQzlCLFlBQVksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDekMsQ0FBQztZQUNELE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFDakIsaURBQWlELEVBQ2pELHlCQUFVLENBQUMscUJBQXFCLEVBQ2hDLHdCQUFTLENBQUMsY0FBYyxDQUN6QixDQUNGLENBQUM7UUFDSixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQyxNQUFNLE1BQU0sR0FBd0I7WUFDbEMsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxFQUFFLDRCQUE0QjtTQUM3RCxDQUFDO1FBQ0YsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFBLElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDNUYsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFBLElBQUksQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDNUYsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixPQUFPO2dCQUNMLElBQUksRUFBRSxHQUFHLEtBQUssR0FBRztnQkFDakIsTUFBTSxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsUUFBUSxJQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHO2FBQ3RFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFlLENBQUM7UUFFakMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixPQUFPO2dCQUNMLElBQUksRUFBRSxHQUFHLEtBQUssR0FBRztnQkFDakIsTUFBTSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBRSxHQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHO2FBQ25FLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFlLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQW9CO1lBQzdCLG1CQUFtQixFQUFFLFlBQVk7WUFDakMsZUFBZSxFQUFFLGVBQWU7U0FDbEMsQ0FBQTtRQUNBLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLHdDQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxvQ0FBcUIsRUFBQyxNQUFNLEVBQUUsMkNBQTJDLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQ2pCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixFQUNoRSx5QkFBVSxDQUFDLHFCQUFxQixFQUNoQyx3QkFBUyxDQUFDLGNBQWMsQ0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQXhJVyxRQUFBLEdBQUcsT0F3SWQifQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const framework_1 = require("@medusajs/framework");
7
+ const middleware_1 = __importDefault(require("./gold-rate/middleware"));
8
+ exports.default = (0, framework_1.defineMiddlewares)({
9
+ routes: [
10
+ ...(middleware_1.default.routes || []),
11
+ ],
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFBd0Q7QUFFeEQsd0VBQTREO0FBRTVELGtCQUFlLElBQUEsNkJBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sR0FBRyxDQUFDLG9CQUFzQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7S0FDekM7Q0FDRixDQUFDLENBQUMifQ==
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const erp_1 = require("../../../../modules/erp");
6
+ const api_response_1 = require("../../../../lib/api-response");
7
+ const build_redis_key_1 = require("../../../../utils/build-redis-key");
8
+ const POST = async (req, res) => {
9
+ try {
10
+ const { grams, purity } = req.validatedBody;
11
+ const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
12
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
13
+ const erpService = req.scope.resolve(erp_1.ERP_MODULE);
14
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
15
+ const calculationCacheKey = (0, build_redis_key_1.buildRedisKey)("gold-rate:calculation", {
16
+ grams,
17
+ purity,
18
+ });
19
+ const cachedResult = await cacheService.get(calculationCacheKey);
20
+ if (cachedResult) {
21
+ logger.info(`[CURRENT-GOLD-RATE] : Returning cached result for grams: ${grams}, purity: ${purity}`);
22
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Gold rate calculated successfully"));
23
+ }
24
+ const goldRateData = (await erpService.getGoldRateData());
25
+ if (!goldRateData?.CurrentGoldRate?.length) {
26
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("No gold rate data available from ERP", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
27
+ }
28
+ const { data: qualityMasters } = await query.graph({
29
+ entity: "quality_master",
30
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
31
+ filters: {
32
+ qly_code: purity.toString(),
33
+ },
34
+ });
35
+ const qly = qualityMasters?.[0];
36
+ if (!qly && purity !== 24) {
37
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Purity ${purity} not found in QualityMaster`, api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
38
+ }
39
+ if (!qly?.qly_mfg_clarity && purity !== 24) {
40
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Quality master for purity ${purity} does not have qly_mfg_clarity set`, api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
41
+ }
42
+ const baseGold = goldRateData.CurrentGoldRate.find((g) => g.RawName === "GOLD");
43
+ if (!baseGold) {
44
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Base gold rate (GOLD) not found in ERP response", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
45
+ }
46
+ let ratePerGram;
47
+ if (purity === 24) {
48
+ ratePerGram = baseGold.SaleRate;
49
+ }
50
+ else {
51
+ ratePerGram = (baseGold.SaleRate * qly.qly_mfg_clarity) / 100.0;
52
+ }
53
+ const totalPrice = ratePerGram * grams;
54
+ const result = {
55
+ purity,
56
+ grams,
57
+ base_rate: baseGold.SaleRate,
58
+ rate_per_gram: ratePerGram,
59
+ total_price: totalPrice,
60
+ };
61
+ await cacheService.set(calculationCacheKey, result, build_redis_key_1.CACHE_VALIDATION_TIMES.GOLD_RATE);
62
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result, "Gold rate calculated successfully"));
63
+ }
64
+ catch (error) {
65
+ console.error("Error fetching gold rate:", error);
66
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error instanceof Error ? error.message : "Internal server error", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
67
+ }
68
+ };
69
+ exports.POST = POST;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2dvbGQtcmF0ZS9jdXJyZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUErRTtBQUMvRSxpREFBcUQ7QUFFckQsK0RBTXNDO0FBRXRDLHVFQUcyQztBQTBCcEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGFBQTJDLENBQUM7UUFFMUUsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRSxNQUFNLG1CQUFtQixHQUFHLElBQUEsK0JBQWEsRUFBQyx1QkFBdUIsRUFBRTtZQUNqRSxLQUFLO1lBQ0wsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDekMsbUJBQW1CLENBQ3BCLENBQUM7UUFFRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsNERBQTRELEtBQUssYUFBYSxNQUFNLEVBQUUsQ0FDdkYsQ0FBQztZQUNGLE9BQU8sSUFBQSw4QkFBZSxFQUNw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
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const erp_1 = require("../../../../modules/erp");
6
+ const build_redis_key_1 = require("../../../../utils/build-redis-key");
7
+ const api_response_1 = require("../../../../lib/api-response");
8
+ const POST = async (req, res) => {
9
+ try {
10
+ const { grams } = req.validatedBody;
11
+ const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
12
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
13
+ const erpService = req.scope.resolve(erp_1.ERP_MODULE);
14
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
15
+ const cacheKey = (0, build_redis_key_1.buildRedisKey)("gold-rate:historical", { grams });
16
+ const cachedResult = await cacheService.get(cacheKey);
17
+ if (cachedResult) {
18
+ logger.info(`[HISTORICAL-GOLD-RATE] : Returning cached result for grams: ${grams}`);
19
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Historical gold rate fetched successfully"));
20
+ }
21
+ // Fetch gold rate data from ERP
22
+ const goldRateData = (await erpService.getGoldRateData());
23
+ if (!goldRateData?.PreviousGoldRateDetail ||
24
+ goldRateData.PreviousGoldRateDetail.length === 0) {
25
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("No historical gold rate data available from ERP", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
26
+ }
27
+ // Fetch quality masters for 14, 18 and 22 karat (24 karat uses base rate directly)
28
+ const [quality14Result, quality18Result, quality22Result] = await Promise.all([
29
+ query.graph({
30
+ entity: "quality_master",
31
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
32
+ filters: {
33
+ qly_code: "14",
34
+ },
35
+ }),
36
+ query.graph({
37
+ entity: "quality_master",
38
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
39
+ filters: {
40
+ qly_code: "18",
41
+ },
42
+ }),
43
+ query.graph({
44
+ entity: "quality_master",
45
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
46
+ filters: {
47
+ qly_code: "22",
48
+ },
49
+ }),
50
+ ]);
51
+ const { data: qualityMasters14 } = quality14Result;
52
+ const { data: qualityMasters18 } = quality18Result;
53
+ const { data: qualityMasters22 } = quality22Result;
54
+ const qly14 = qualityMasters14?.[0];
55
+ const qly18 = qualityMasters18?.[0];
56
+ const qly22 = qualityMasters22?.[0];
57
+ if (!qly22?.qly_mfg_clarity ||
58
+ !qly18?.qly_mfg_clarity ||
59
+ !qly14?.qly_mfg_clarity) {
60
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Quality masters for 14/18/22 karat not found or missing qly_mfg_clarity", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
61
+ }
62
+ // Group historical data by date
63
+ const dateGroups = new Map();
64
+ for (const entry of goldRateData.PreviousGoldRateDetail) {
65
+ if (entry.RawName === "GOLD") {
66
+ const dateKey = entry.RateDate.split("T")[0]; // Extract date part
67
+ if (!dateGroups.has(dateKey)) {
68
+ dateGroups.set(dateKey, []);
69
+ }
70
+ dateGroups.get(dateKey).push(entry);
71
+ }
72
+ }
73
+ const result = [];
74
+ for (const [dateStr, entries] of dateGroups.entries()) {
75
+ // Get the most recent entry for this date (in case of duplicates)
76
+ const entry = entries.sort((a, b) => new Date(b.RateDate).getTime() - new Date(a.RateDate).getTime())[0];
77
+ const baseSaleRate = entry.SaleRate;
78
+ // Calculate rates per gram for each karat
79
+ const rate24PerGram = baseSaleRate;
80
+ const rate14PerGram = (baseSaleRate * qly14.qly_mfg_clarity) / 100.0;
81
+ const rate22PerGram = (baseSaleRate * qly22.qly_mfg_clarity) / 100.0;
82
+ const rate18PerGram = (baseSaleRate * qly18.qly_mfg_clarity) / 100.0;
83
+ // Calculate total prices for given grams
84
+ const carat24 = rate24PerGram * grams;
85
+ const carat14 = rate14PerGram * grams;
86
+ const carat22 = rate22PerGram * grams;
87
+ const carat18 = rate18PerGram * grams;
88
+ result.push({
89
+ date: entry.RateDate,
90
+ carat14,
91
+ carat24,
92
+ carat22,
93
+ carat18,
94
+ });
95
+ }
96
+ // // Sort by date (oldest first)
97
+ // result.sort((a, b) => a.date.getTime() - b.date.getTime());
98
+ // Cache the result
99
+ await cacheService.set(cacheKey, result, build_redis_key_1.CACHE_VALIDATION_TIMES.GOLD_RATE);
100
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result, "Historical gold rate fetched successfully"));
101
+ }
102
+ catch (error) {
103
+ console.error("Error fetching historical gold rate:", error);
104
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error instanceof Error ? error.message : "Internal server error", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
105
+ }
106
+ };
107
+ exports.POST = POST;
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2dvbGQtcmF0ZS9oaXN0b3JpY2FsL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUErRTtBQUcvRSxpREFBcUQ7QUFDckQsdUVBRzJDO0FBQzNDLCtEQU1zQztBQTBCL0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFpRCxFQUNqRCxHQUFtQixFQUNuQixFQUFFO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFcEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRSxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFhLEVBQUMsc0JBQXNCLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDekMsUUFBUSxDQUNULENBQUM7UUFFRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsK0RBQStELEtBQUssRUFBRSxDQUN2RSxDQUFDO1lBQ0YsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUNuQixZ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
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const http_1 = require("@medusajs/framework/http");
4
+ const validators_1 = require("./validators");
5
+ exports.default = (0, http_1.defineMiddlewares)({
6
+ routes: [
7
+ {
8
+ matcher: "/store/gold-rate/current",
9
+ method: "POST",
10
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.GetCurrentGoldRateBody)],
11
+ },
12
+ {
13
+ matcher: "/store/gold-rate/historical",
14
+ method: "POST",
15
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.GetHistoricalGoldRateBody)],
16
+ },
17
+ ],
18
+ });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvZ29sZC1yYXRlL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFHa0M7QUFDbEMsNkNBR3NCO0FBRXRCLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxtQ0FBc0IsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsNkJBQTZCO1lBQ3RDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxzQ0FBeUIsQ0FBQyxDQUFDO1NBQ25FO0tBQ0Y7Q0FDRixDQUFDLENBQUMifQ==
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetHistoricalGoldRateBody = exports.GetCurrentGoldRateBody = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.GetCurrentGoldRateBody = zod_1.z
6
+ .object({
7
+ grams: zod_1.z
8
+ .number({
9
+ required_error: "Grams is required",
10
+ invalid_type_error: "Grams must be a number",
11
+ })
12
+ .positive({
13
+ message: "Grams must be a positive number",
14
+ }),
15
+ purity: zod_1.z
16
+ .number({
17
+ required_error: "Purity is required",
18
+ invalid_type_error: "Purity must be a number",
19
+ })
20
+ .positive({
21
+ message: "Purity must be a positive number",
22
+ }),
23
+ })
24
+ .strict();
25
+ exports.GetHistoricalGoldRateBody = zod_1.z
26
+ .object({
27
+ grams: zod_1.z
28
+ .number({
29
+ required_error: "Grams is required",
30
+ invalid_type_error: "Grams must be a number",
31
+ })
32
+ .positive({
33
+ message: "Grams must be a positive number",
34
+ }),
35
+ })
36
+ .strict();
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvZ29sZC1yYXRlL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBRVgsUUFBQSxzQkFBc0IsR0FBRyxPQUFDO0tBQ3BDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxPQUFDO1NBQ0wsTUFBTSxDQUFDO1FBQ04sY0FBYyxFQUFFLG1CQUFtQjtRQUNuQyxrQkFBa0IsRUFBRSx3QkFBd0I7S0FDN0MsQ0FBQztTQUNELFFBQVEsQ0FBQztRQUNSLE9BQU8sRUFBRSxpQ0FBaUM7S0FDM0MsQ0FBQztJQUNKLE1BQU0sRUFBRSxPQUFDO1NBQ04sTUFBTSxDQUFDO1FBQ04sY0FBYyxFQUFFLG9CQUFvQjtRQUNwQyxrQkFBa0IsRUFBRSx5QkFBeUI7S0FDOUMsQ0FBQztTQUNELFFBQVEsQ0FBQztRQUNSLE9BQU8sRUFBRSxrQ0FBa0M7S0FDNUMsQ0FBQztDQUNMLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUlDLFFBQUEseUJBQXlCLEdBQUcsT0FBQztLQUN2QyxNQUFNLENBQUM7SUFDTixLQUFLLEVBQUUsT0FBQztTQUNMLE1BQU0sQ0FBQztRQUNOLGNBQWMsRUFBRSxtQkFBbUI7UUFDbkMsa0JBQWtCLEVBQUUsd0JBQXdCO0tBQzdDLENBQUM7U0FDRCxRQUFRLENBQUM7UUFDUixPQUFPLEVBQUUsaUNBQWlDO0tBQzNDLENBQUM7Q0FDTCxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUMifQ==
@@ -6,10 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const framework_1 = require("@medusajs/framework");
7
7
  const middleware_1 = __importDefault(require("./carts/middleware"));
8
8
  const middleware_2 = __importDefault(require("./custom-price/middleware"));
9
+ const middleware_3 = __importDefault(require("./gold-rate/middleware"));
9
10
  exports.default = (0, framework_1.defineMiddlewares)({
10
11
  routes: [
11
12
  ...(middleware_1.default.routes || []),
12
13
  ...(middleware_2.default.routes || []),
14
+ ...(middleware_3.default.routes || []),
13
15
  ],
14
16
  });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQUF3RDtBQUV4RCxvRUFBdUQ7QUFDdkQsMkVBQW9FO0FBRXBFLGtCQUFlLElBQUEsNkJBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sR0FBRyxDQUFDLG9CQUFxQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLG9CQUEyQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7S0FDOUM7Q0FDRixDQUFDLENBQUMifQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQUF3RDtBQUV4RCxvRUFBdUQ7QUFDdkQsMkVBQW9FO0FBQ3BFLHdFQUE4RDtBQUU5RCxrQkFBZSxJQUFBLDZCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOLEdBQUcsQ0FBQyxvQkFBcUIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxvQkFBMkIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzdDLEdBQUcsQ0FBQyxvQkFBd0IsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0tBQzNDO0NBQ0YsQ0FBQyxDQUFDIn0=