@devx-commerce/plugin-gati 0.0.34-beta.15 → 0.0.34-beta.16
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.
|
@@ -70,23 +70,41 @@ async function processErpEvents(container) {
|
|
|
70
70
|
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
71
71
|
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
72
72
|
try {
|
|
73
|
-
//
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
73
|
+
// First, get all in-progress events to know which datafor types are blocked
|
|
74
|
+
const allInProgressEvents = [];
|
|
75
|
+
let skip = 0;
|
|
76
|
+
const take = 100;
|
|
77
|
+
let hasMore = true;
|
|
78
|
+
while (hasMore) {
|
|
79
|
+
const { data: inProgressEvents } = await query.graph({
|
|
80
|
+
entity: "erp_event",
|
|
81
|
+
fields: ["id", "datafor"],
|
|
82
|
+
filters: {
|
|
83
|
+
status: "in-progress",
|
|
84
|
+
},
|
|
85
|
+
pagination: {
|
|
86
|
+
skip,
|
|
87
|
+
take,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
if (inProgressEvents.length === 0) {
|
|
91
|
+
hasMore = false;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
allInProgressEvents.push(...inProgressEvents);
|
|
95
|
+
skip += take;
|
|
96
|
+
// Safety check - in-progress events should be limited
|
|
97
|
+
if (skip > 1000) {
|
|
98
|
+
logger.warn("⚠️ Safety limit reached for in-progress events query");
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Get the set of datafor types that are currently in-progress
|
|
103
|
+
const blockedDataforTypes = new Set(allInProgressEvents.map((e) => e.datafor));
|
|
104
|
+
if (blockedDataforTypes.size > 0) {
|
|
105
|
+
logger.debug(`In-progress event types: ${Array.from(blockedDataforTypes).join(", ")}`);
|
|
88
106
|
}
|
|
89
|
-
// Get
|
|
107
|
+
// Get pending events ordered by created_at (FIFO)
|
|
90
108
|
const { data: pendingEvents } = await query.graph({
|
|
91
109
|
entity: "erp_event",
|
|
92
110
|
fields: ["id", "datafor", "operation", "data", "status", "created_at"],
|
|
@@ -95,7 +113,7 @@ async function processErpEvents(container) {
|
|
|
95
113
|
},
|
|
96
114
|
pagination: {
|
|
97
115
|
skip: 0,
|
|
98
|
-
take:
|
|
116
|
+
take: 100, // Get more to find one that's not blocked
|
|
99
117
|
order: { created_at: "asc" }, // Process oldest first
|
|
100
118
|
},
|
|
101
119
|
});
|
|
@@ -103,7 +121,12 @@ async function processErpEvents(container) {
|
|
|
103
121
|
logger.debug("No pending ERP events to process");
|
|
104
122
|
return;
|
|
105
123
|
}
|
|
106
|
-
|
|
124
|
+
// Find the first pending event whose datafor type is not blocked
|
|
125
|
+
const event = pendingEvents.find((e) => !blockedDataforTypes.has(e.datafor));
|
|
126
|
+
if (!event) {
|
|
127
|
+
logger.debug(`All pending events are blocked by in-progress events of same type`);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
107
130
|
const { id, datafor, operation, data } = event;
|
|
108
131
|
logger.info(`Processing ERP event ${id}: ${operation} for ${datafor} with ${data.length} items`);
|
|
109
132
|
// Update status to in-progress
|
|
@@ -144,6 +167,19 @@ async function processErpEvents(container) {
|
|
|
144
167
|
logger.info(`✅ Successfully processed ERP event ${id}`);
|
|
145
168
|
}
|
|
146
169
|
catch (error) {
|
|
170
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
171
|
+
// Check if the error indicates the event is already completed
|
|
172
|
+
if (errorMessage.includes("ERP event is already completed")) {
|
|
173
|
+
logger.info(`✅ ERP event ${id} is already completed (detected from error)`);
|
|
174
|
+
await (0, update_erp_event_1.updateErpEventWorkflow)(container).run({
|
|
175
|
+
input: {
|
|
176
|
+
id,
|
|
177
|
+
status: "completed",
|
|
178
|
+
sync_completed_at: new Date(),
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
147
183
|
logger.error(`❌ Failed to process ERP event ${id}:`, error);
|
|
148
184
|
// Update status to failed
|
|
149
185
|
await (0, update_erp_event_1.updateErpEventWorkflow)(container).run({
|
|
@@ -164,6 +200,6 @@ async function processErpEvents(container) {
|
|
|
164
200
|
}
|
|
165
201
|
exports.config = {
|
|
166
202
|
name: "process-erp-events",
|
|
167
|
-
schedule: "
|
|
203
|
+
schedule: "* * * * *", // Every minute
|
|
168
204
|
};
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1lcnAtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvcHJvY2Vzcy1lcnAtZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlHQSxtQ0FnTEM7QUFoUkQscURBQXNFO0FBQ3RFLGdGQUFrRjtBQUNsRix3RkFBMkY7QUFDM0Ysc0RBSW1DO0FBQ25DLG1EQUE2QztBQUU3QyxrREFBa0Q7QUFDbEQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLDhCQUE4QjtRQUN4QyxTQUFTLEVBQUUsR0FBRztRQUNkLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxhQUFhLEVBQUU7UUFDYixRQUFRLEVBQUUsOEJBQThCO1FBQ3hDLFNBQVMsRUFBRSxHQUFHO1FBQ2QsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNOLFFBQVEsRUFBRSw4QkFBOEI7UUFDeEMsU0FBUyxFQUFFLEdBQUc7UUFDZCxPQUFPLEVBQUUsSUFBSTtLQUNkO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGNBQWMsQ0FDM0IsU0FBMEIsRUFDMUIsT0FBbUIsRUFDbkIsU0FBb0IsRUFDcEIsSUFBYyxFQUNkLFVBQWtCO0lBRWxCLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxPQUF1QyxDQUFDLENBQUM7SUFFNUUsa0JBQU0sQ0FBQyxJQUFJLENBQ1QsOEJBQThCLE9BQU8sU0FBUyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQ2xFLENBQUM7SUFFRixJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLG9EQUEyQixFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNsRSxLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO2dCQUM3QixVQUFVLEVBQUU7b0JBQ1YsU0FBUyxFQUFFLFVB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
|