@adaptic/backend-legacy 0.0.903 → 0.0.905
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.
- package/ABTest.cjs +291 -63
- package/Account.cjs +291 -63
- package/AccountLinkingRequest.cjs +291 -63
- package/Action.cjs +291 -63
- package/Alert.cjs +291 -63
- package/Allocation.cjs +291 -63
- package/AlpacaAccount.cjs +291 -63
- package/AnalyticsConfiguration.cjs +291 -63
- package/AnalyticsSnapshot.cjs +291 -63
- package/Asset.cjs +291 -63
- package/AuditLog.cjs +291 -63
- package/Authenticator.cjs +291 -63
- package/Configuration.cjs +291 -63
- package/ConflictEvent.cjs +291 -63
- package/ConnectionHealthSnapshot.cjs +291 -63
- package/Customer.cjs +291 -63
- package/DeadLetterMessage.cjs +291 -63
- package/EconomicEvent.cjs +291 -63
- package/Event.cjs +291 -63
- package/EventSnapshot.cjs +291 -63
- package/FeatureImportanceAnalysis.cjs +291 -63
- package/InstitutionalFlowSignal.cjs +291 -63
- package/InstitutionalHolding.cjs +291 -63
- package/InstitutionalSentimentAlerts.cjs +291 -63
- package/InstitutionalSentimentErrors.cjs +291 -63
- package/InstitutionalSentimentHistory.cjs +291 -63
- package/InstitutionalSentimentMetrics.cjs +291 -63
- package/InviteToken.cjs +291 -63
- package/LinkedProvider.cjs +291 -63
- package/MLTrainingData.cjs +291 -63
- package/MarketSentiment.cjs +291 -63
- package/ModelArtifact.cjs +291 -63
- package/ModelVersion.cjs +291 -63
- package/ModelVersionArtifact.cjs +291 -63
- package/NewsArticle.cjs +291 -63
- package/NewsArticleAssetSentiment.cjs +291 -63
- package/OptionsContract.cjs +291 -63
- package/OptionsGreeksHistory.cjs +291 -63
- package/OptionsPosition.cjs +291 -63
- package/OptionsTradeExecution.cjs +291 -63
- package/PortfolioGreeksHistory.cjs +291 -63
- package/ScheduledOptionOrder.cjs +291 -63
- package/Session.cjs +291 -63
- package/SignalGeneratorMetrics.cjs +291 -63
- package/SignalLineage.cjs +291 -63
- package/SignalOutcome.cjs +291 -63
- package/SignalPriorityQueue.cjs +291 -63
- package/SyncEvent.cjs +291 -63
- package/SystemAlert.cjs +291 -63
- package/Trade.cjs +291 -63
- package/TradeAuditEvent.cjs +291 -63
- package/TradeExecutionHistory.cjs +291 -63
- package/User.cjs +291 -63
- package/VerificationToken.cjs +291 -63
- package/WaitlistEntry.cjs +291 -63
- package/esm/ABTest.d.ts.map +1 -1
- package/esm/ABTest.js.map +1 -1
- package/esm/ABTest.mjs +255 -27
- package/esm/Account.d.ts.map +1 -1
- package/esm/Account.js.map +1 -1
- package/esm/Account.mjs +255 -27
- package/esm/AccountLinkingRequest.d.ts.map +1 -1
- package/esm/AccountLinkingRequest.js.map +1 -1
- package/esm/AccountLinkingRequest.mjs +255 -27
- package/esm/Action.d.ts.map +1 -1
- package/esm/Action.js.map +1 -1
- package/esm/Action.mjs +255 -27
- package/esm/Alert.d.ts.map +1 -1
- package/esm/Alert.js.map +1 -1
- package/esm/Alert.mjs +255 -27
- package/esm/Allocation.d.ts.map +1 -1
- package/esm/Allocation.js.map +1 -1
- package/esm/Allocation.mjs +255 -27
- package/esm/AlpacaAccount.d.ts.map +1 -1
- package/esm/AlpacaAccount.js.map +1 -1
- package/esm/AlpacaAccount.mjs +255 -27
- package/esm/AnalyticsConfiguration.d.ts.map +1 -1
- package/esm/AnalyticsConfiguration.js.map +1 -1
- package/esm/AnalyticsConfiguration.mjs +255 -27
- package/esm/AnalyticsSnapshot.d.ts.map +1 -1
- package/esm/AnalyticsSnapshot.js.map +1 -1
- package/esm/AnalyticsSnapshot.mjs +255 -27
- package/esm/Asset.d.ts.map +1 -1
- package/esm/Asset.js.map +1 -1
- package/esm/Asset.mjs +255 -27
- package/esm/AuditLog.d.ts.map +1 -1
- package/esm/AuditLog.js.map +1 -1
- package/esm/AuditLog.mjs +255 -27
- package/esm/Authenticator.d.ts.map +1 -1
- package/esm/Authenticator.js.map +1 -1
- package/esm/Authenticator.mjs +255 -27
- package/esm/Configuration.d.ts.map +1 -1
- package/esm/Configuration.js.map +1 -1
- package/esm/Configuration.mjs +255 -27
- package/esm/ConflictEvent.d.ts.map +1 -1
- package/esm/ConflictEvent.js.map +1 -1
- package/esm/ConflictEvent.mjs +255 -27
- package/esm/ConnectionHealthSnapshot.d.ts.map +1 -1
- package/esm/ConnectionHealthSnapshot.js.map +1 -1
- package/esm/ConnectionHealthSnapshot.mjs +255 -27
- package/esm/Customer.d.ts.map +1 -1
- package/esm/Customer.js.map +1 -1
- package/esm/Customer.mjs +255 -27
- package/esm/DeadLetterMessage.d.ts.map +1 -1
- package/esm/DeadLetterMessage.js.map +1 -1
- package/esm/DeadLetterMessage.mjs +255 -27
- package/esm/EconomicEvent.d.ts.map +1 -1
- package/esm/EconomicEvent.js.map +1 -1
- package/esm/EconomicEvent.mjs +255 -27
- package/esm/Event.d.ts.map +1 -1
- package/esm/Event.js.map +1 -1
- package/esm/Event.mjs +255 -27
- package/esm/EventSnapshot.d.ts.map +1 -1
- package/esm/EventSnapshot.js.map +1 -1
- package/esm/EventSnapshot.mjs +255 -27
- package/esm/FeatureImportanceAnalysis.d.ts.map +1 -1
- package/esm/FeatureImportanceAnalysis.js.map +1 -1
- package/esm/FeatureImportanceAnalysis.mjs +255 -27
- package/esm/InstitutionalFlowSignal.d.ts.map +1 -1
- package/esm/InstitutionalFlowSignal.js.map +1 -1
- package/esm/InstitutionalFlowSignal.mjs +255 -27
- package/esm/InstitutionalHolding.d.ts.map +1 -1
- package/esm/InstitutionalHolding.js.map +1 -1
- package/esm/InstitutionalHolding.mjs +255 -27
- package/esm/InstitutionalSentimentAlerts.d.ts.map +1 -1
- package/esm/InstitutionalSentimentAlerts.js.map +1 -1
- package/esm/InstitutionalSentimentAlerts.mjs +255 -27
- package/esm/InstitutionalSentimentErrors.d.ts.map +1 -1
- package/esm/InstitutionalSentimentErrors.js.map +1 -1
- package/esm/InstitutionalSentimentErrors.mjs +255 -27
- package/esm/InstitutionalSentimentHistory.d.ts.map +1 -1
- package/esm/InstitutionalSentimentHistory.js.map +1 -1
- package/esm/InstitutionalSentimentHistory.mjs +255 -27
- package/esm/InstitutionalSentimentMetrics.d.ts.map +1 -1
- package/esm/InstitutionalSentimentMetrics.js.map +1 -1
- package/esm/InstitutionalSentimentMetrics.mjs +255 -27
- package/esm/InviteToken.d.ts.map +1 -1
- package/esm/InviteToken.js.map +1 -1
- package/esm/InviteToken.mjs +255 -27
- package/esm/LinkedProvider.d.ts.map +1 -1
- package/esm/LinkedProvider.js.map +1 -1
- package/esm/LinkedProvider.mjs +255 -27
- package/esm/MLTrainingData.d.ts.map +1 -1
- package/esm/MLTrainingData.js.map +1 -1
- package/esm/MLTrainingData.mjs +255 -27
- package/esm/MarketSentiment.d.ts.map +1 -1
- package/esm/MarketSentiment.js.map +1 -1
- package/esm/MarketSentiment.mjs +255 -27
- package/esm/ModelArtifact.d.ts.map +1 -1
- package/esm/ModelArtifact.js.map +1 -1
- package/esm/ModelArtifact.mjs +255 -27
- package/esm/ModelVersion.d.ts.map +1 -1
- package/esm/ModelVersion.js.map +1 -1
- package/esm/ModelVersion.mjs +255 -27
- package/esm/ModelVersionArtifact.d.ts.map +1 -1
- package/esm/ModelVersionArtifact.js.map +1 -1
- package/esm/ModelVersionArtifact.mjs +255 -27
- package/esm/NewsArticle.d.ts.map +1 -1
- package/esm/NewsArticle.js.map +1 -1
- package/esm/NewsArticle.mjs +255 -27
- package/esm/NewsArticleAssetSentiment.d.ts.map +1 -1
- package/esm/NewsArticleAssetSentiment.js.map +1 -1
- package/esm/NewsArticleAssetSentiment.mjs +255 -27
- package/esm/OptionsContract.d.ts.map +1 -1
- package/esm/OptionsContract.js.map +1 -1
- package/esm/OptionsContract.mjs +255 -27
- package/esm/OptionsGreeksHistory.d.ts.map +1 -1
- package/esm/OptionsGreeksHistory.js.map +1 -1
- package/esm/OptionsGreeksHistory.mjs +255 -27
- package/esm/OptionsPosition.d.ts.map +1 -1
- package/esm/OptionsPosition.js.map +1 -1
- package/esm/OptionsPosition.mjs +255 -27
- package/esm/OptionsTradeExecution.d.ts.map +1 -1
- package/esm/OptionsTradeExecution.js.map +1 -1
- package/esm/OptionsTradeExecution.mjs +255 -27
- package/esm/PortfolioGreeksHistory.d.ts.map +1 -1
- package/esm/PortfolioGreeksHistory.js.map +1 -1
- package/esm/PortfolioGreeksHistory.mjs +255 -27
- package/esm/ScheduledOptionOrder.d.ts.map +1 -1
- package/esm/ScheduledOptionOrder.js.map +1 -1
- package/esm/ScheduledOptionOrder.mjs +255 -27
- package/esm/Session.d.ts.map +1 -1
- package/esm/Session.js.map +1 -1
- package/esm/Session.mjs +255 -27
- package/esm/SignalGeneratorMetrics.d.ts.map +1 -1
- package/esm/SignalGeneratorMetrics.js.map +1 -1
- package/esm/SignalGeneratorMetrics.mjs +255 -27
- package/esm/SignalLineage.d.ts.map +1 -1
- package/esm/SignalLineage.js.map +1 -1
- package/esm/SignalLineage.mjs +255 -27
- package/esm/SignalOutcome.d.ts.map +1 -1
- package/esm/SignalOutcome.js.map +1 -1
- package/esm/SignalOutcome.mjs +255 -27
- package/esm/SignalPriorityQueue.d.ts.map +1 -1
- package/esm/SignalPriorityQueue.js.map +1 -1
- package/esm/SignalPriorityQueue.mjs +255 -27
- package/esm/SyncEvent.d.ts.map +1 -1
- package/esm/SyncEvent.js.map +1 -1
- package/esm/SyncEvent.mjs +255 -27
- package/esm/SystemAlert.d.ts.map +1 -1
- package/esm/SystemAlert.js.map +1 -1
- package/esm/SystemAlert.mjs +255 -27
- package/esm/Trade.d.ts.map +1 -1
- package/esm/Trade.js.map +1 -1
- package/esm/Trade.mjs +255 -27
- package/esm/TradeAuditEvent.d.ts.map +1 -1
- package/esm/TradeAuditEvent.js.map +1 -1
- package/esm/TradeAuditEvent.mjs +255 -27
- package/esm/TradeExecutionHistory.d.ts.map +1 -1
- package/esm/TradeExecutionHistory.js.map +1 -1
- package/esm/TradeExecutionHistory.mjs +255 -27
- package/esm/User.d.ts.map +1 -1
- package/esm/User.js.map +1 -1
- package/esm/User.mjs +255 -27
- package/esm/VerificationToken.d.ts.map +1 -1
- package/esm/VerificationToken.js.map +1 -1
- package/esm/VerificationToken.mjs +255 -27
- package/esm/WaitlistEntry.d.ts.map +1 -1
- package/esm/WaitlistEntry.js.map +1 -1
- package/esm/WaitlistEntry.mjs +255 -27
- package/esm/middleware/audit-logger.d.ts +0 -7
- package/esm/middleware/audit-logger.d.ts.map +1 -1
- package/esm/middleware/audit-logger.js.map +1 -1
- package/esm/middleware/audit-logger.mjs +5 -3
- package/esm/prismaClient.d.ts.map +1 -1
- package/esm/prismaClient.js.map +1 -1
- package/esm/prismaClient.mjs +38 -9
- package/package.json +1 -1
- package/prismaClient.cjs +38 -9
package/DeadLetterMessage.cjs
CHANGED
|
@@ -60,7 +60,7 @@ exports.DeadLetterMessage = {
|
|
|
60
60
|
* @returns The created DeadLetterMessage or null.
|
|
61
61
|
*/
|
|
62
62
|
async create(props, globalClient) {
|
|
63
|
-
var _a, _b, _c, _d, _e;
|
|
63
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
64
64
|
// Maximum number of retries for database connection issues
|
|
65
65
|
const MAX_RETRIES = 3;
|
|
66
66
|
let retryCount = 0;
|
|
@@ -134,21 +134,52 @@ exports.DeadLetterMessage = {
|
|
|
134
134
|
}
|
|
135
135
|
catch (error) {
|
|
136
136
|
lastError = error;
|
|
137
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
138
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
139
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
140
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
141
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
142
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
143
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
144
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
145
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
146
|
+
if (isConstraintViolation) {
|
|
147
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
148
|
+
logger_1.logger.error("Non-retryable constraint violation in createOneDeadLetterMessage", {
|
|
149
|
+
operation: 'createOneDeadLetterMessage',
|
|
150
|
+
model: 'DeadLetterMessage',
|
|
151
|
+
error: String(error),
|
|
152
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
153
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
154
|
+
isRetryable: false,
|
|
155
|
+
});
|
|
156
|
+
throw error;
|
|
157
|
+
}
|
|
137
158
|
// Check if this is a database connection error that we should retry
|
|
138
|
-
const isConnectionError = ((
|
|
139
|
-
((
|
|
140
|
-
((
|
|
141
|
-
((
|
|
142
|
-
(error.networkError && ((
|
|
159
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
160
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
161
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
162
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
163
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
143
164
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
144
165
|
retryCount++;
|
|
145
166
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
146
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
167
|
+
logger_1.logger.warn("Database connection error in createOneDeadLetterMessage, retrying...", {
|
|
168
|
+
operation: 'createOneDeadLetterMessage',
|
|
169
|
+
model: 'DeadLetterMessage',
|
|
170
|
+
attempt: retryCount,
|
|
171
|
+
maxRetries: MAX_RETRIES,
|
|
172
|
+
});
|
|
147
173
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
148
174
|
continue;
|
|
149
175
|
}
|
|
150
|
-
// Log
|
|
151
|
-
logger_1.logger.error("Database
|
|
176
|
+
// Log structured error details and rethrow
|
|
177
|
+
logger_1.logger.error("Database create operation failed", {
|
|
178
|
+
operation: 'createOneDeadLetterMessage',
|
|
179
|
+
model: 'DeadLetterMessage',
|
|
180
|
+
error: String(error),
|
|
181
|
+
isRetryable: isConnectionError,
|
|
182
|
+
});
|
|
152
183
|
throw error;
|
|
153
184
|
}
|
|
154
185
|
}
|
|
@@ -163,7 +194,7 @@ exports.DeadLetterMessage = {
|
|
|
163
194
|
* @returns The count of created records or null.
|
|
164
195
|
*/
|
|
165
196
|
async createMany(props, globalClient) {
|
|
166
|
-
var _a, _b, _c, _d, _e;
|
|
197
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
167
198
|
// Maximum number of retries for database connection issues
|
|
168
199
|
const MAX_RETRIES = 3;
|
|
169
200
|
let retryCount = 0;
|
|
@@ -236,21 +267,52 @@ exports.DeadLetterMessage = {
|
|
|
236
267
|
}
|
|
237
268
|
catch (error) {
|
|
238
269
|
lastError = error;
|
|
270
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
271
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
272
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
273
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
274
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
275
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
276
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
277
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
278
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
279
|
+
if (isConstraintViolation) {
|
|
280
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
281
|
+
logger_1.logger.error("Non-retryable constraint violation in createManyDeadLetterMessage", {
|
|
282
|
+
operation: 'createManyDeadLetterMessage',
|
|
283
|
+
model: 'DeadLetterMessage',
|
|
284
|
+
error: String(error),
|
|
285
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
286
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
287
|
+
isRetryable: false,
|
|
288
|
+
});
|
|
289
|
+
throw error;
|
|
290
|
+
}
|
|
239
291
|
// Check if this is a database connection error that we should retry
|
|
240
|
-
const isConnectionError = ((
|
|
241
|
-
((
|
|
242
|
-
((
|
|
243
|
-
((
|
|
244
|
-
(error.networkError && ((
|
|
292
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
293
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
294
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
295
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
296
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
245
297
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
246
298
|
retryCount++;
|
|
247
299
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
248
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
300
|
+
logger_1.logger.warn("Database connection error in createManyDeadLetterMessage, retrying...", {
|
|
301
|
+
operation: 'createManyDeadLetterMessage',
|
|
302
|
+
model: 'DeadLetterMessage',
|
|
303
|
+
attempt: retryCount,
|
|
304
|
+
maxRetries: MAX_RETRIES,
|
|
305
|
+
});
|
|
249
306
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
250
307
|
continue;
|
|
251
308
|
}
|
|
252
|
-
// Log
|
|
253
|
-
logger_1.logger.error("Database
|
|
309
|
+
// Log structured error details and rethrow
|
|
310
|
+
logger_1.logger.error("Database createMany operation failed", {
|
|
311
|
+
operation: 'createManyDeadLetterMessage',
|
|
312
|
+
model: 'DeadLetterMessage',
|
|
313
|
+
error: String(error),
|
|
314
|
+
isRetryable: isConnectionError,
|
|
315
|
+
});
|
|
254
316
|
throw error;
|
|
255
317
|
}
|
|
256
318
|
}
|
|
@@ -265,7 +327,7 @@ exports.DeadLetterMessage = {
|
|
|
265
327
|
* @returns The updated DeadLetterMessage or null.
|
|
266
328
|
*/
|
|
267
329
|
async update(props, globalClient) {
|
|
268
|
-
var _a, _b, _c, _d, _e;
|
|
330
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
269
331
|
// Maximum number of retries for database connection issues
|
|
270
332
|
const MAX_RETRIES = 3;
|
|
271
333
|
let retryCount = 0;
|
|
@@ -416,21 +478,55 @@ exports.DeadLetterMessage = {
|
|
|
416
478
|
}
|
|
417
479
|
catch (error) {
|
|
418
480
|
lastError = error;
|
|
481
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
482
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
483
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
484
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
485
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
486
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
487
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
488
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
489
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
490
|
+
if (isConstraintViolation) {
|
|
491
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
492
|
+
logger_1.logger.error("Non-retryable constraint violation in updateOneDeadLetterMessage", {
|
|
493
|
+
operation: 'updateOneDeadLetterMessage',
|
|
494
|
+
model: 'DeadLetterMessage',
|
|
495
|
+
error: String(error),
|
|
496
|
+
recordId: props.id,
|
|
497
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
498
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
499
|
+
isRetryable: false,
|
|
500
|
+
});
|
|
501
|
+
throw error;
|
|
502
|
+
}
|
|
419
503
|
// Check if this is a database connection error that we should retry
|
|
420
|
-
const isConnectionError = ((
|
|
421
|
-
((
|
|
422
|
-
((
|
|
423
|
-
((
|
|
424
|
-
(error.networkError && ((
|
|
504
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
505
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
506
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
507
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
508
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
425
509
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
426
510
|
retryCount++;
|
|
427
511
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
428
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
512
|
+
logger_1.logger.warn("Database connection error in updateOneDeadLetterMessage, retrying...", {
|
|
513
|
+
operation: 'updateOneDeadLetterMessage',
|
|
514
|
+
model: 'DeadLetterMessage',
|
|
515
|
+
attempt: retryCount,
|
|
516
|
+
maxRetries: MAX_RETRIES,
|
|
517
|
+
recordId: props.id,
|
|
518
|
+
});
|
|
429
519
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
430
520
|
continue;
|
|
431
521
|
}
|
|
432
|
-
// Log
|
|
433
|
-
logger_1.logger.error("Database
|
|
522
|
+
// Log structured error details and rethrow
|
|
523
|
+
logger_1.logger.error("Database update operation failed", {
|
|
524
|
+
operation: 'updateOneDeadLetterMessage',
|
|
525
|
+
model: 'DeadLetterMessage',
|
|
526
|
+
error: String(error),
|
|
527
|
+
recordId: props.id,
|
|
528
|
+
isRetryable: isConnectionError,
|
|
529
|
+
});
|
|
434
530
|
throw error;
|
|
435
531
|
}
|
|
436
532
|
}
|
|
@@ -445,7 +541,7 @@ exports.DeadLetterMessage = {
|
|
|
445
541
|
* @returns The updated DeadLetterMessage or null.
|
|
446
542
|
*/
|
|
447
543
|
async upsert(props, globalClient) {
|
|
448
|
-
var _a, _b, _c, _d, _e;
|
|
544
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
449
545
|
// Maximum number of retries for database connection issues
|
|
450
546
|
const MAX_RETRIES = 3;
|
|
451
547
|
let retryCount = 0;
|
|
@@ -622,21 +718,55 @@ exports.DeadLetterMessage = {
|
|
|
622
718
|
}
|
|
623
719
|
catch (error) {
|
|
624
720
|
lastError = error;
|
|
721
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
722
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
723
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
724
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
725
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
726
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
727
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
728
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
729
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
730
|
+
if (isConstraintViolation) {
|
|
731
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
732
|
+
logger_1.logger.error("Non-retryable constraint violation in upsertOneDeadLetterMessage", {
|
|
733
|
+
operation: 'upsertOneDeadLetterMessage',
|
|
734
|
+
model: 'DeadLetterMessage',
|
|
735
|
+
error: String(error),
|
|
736
|
+
recordId: props.id,
|
|
737
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
738
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
739
|
+
isRetryable: false,
|
|
740
|
+
});
|
|
741
|
+
throw error;
|
|
742
|
+
}
|
|
625
743
|
// Check if this is a database connection error that we should retry
|
|
626
|
-
const isConnectionError = ((
|
|
627
|
-
((
|
|
628
|
-
((
|
|
629
|
-
((
|
|
630
|
-
(error.networkError && ((
|
|
744
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
745
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
746
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
747
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
748
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
631
749
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
632
750
|
retryCount++;
|
|
633
751
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
634
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
752
|
+
logger_1.logger.warn("Database connection error in upsertOneDeadLetterMessage, retrying...", {
|
|
753
|
+
operation: 'upsertOneDeadLetterMessage',
|
|
754
|
+
model: 'DeadLetterMessage',
|
|
755
|
+
attempt: retryCount,
|
|
756
|
+
maxRetries: MAX_RETRIES,
|
|
757
|
+
recordId: props.id,
|
|
758
|
+
});
|
|
635
759
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
636
760
|
continue;
|
|
637
761
|
}
|
|
638
|
-
// Log
|
|
639
|
-
logger_1.logger.error("Database
|
|
762
|
+
// Log structured error details and rethrow
|
|
763
|
+
logger_1.logger.error("Database upsert operation failed", {
|
|
764
|
+
operation: 'upsertOneDeadLetterMessage',
|
|
765
|
+
model: 'DeadLetterMessage',
|
|
766
|
+
error: String(error),
|
|
767
|
+
recordId: props.id,
|
|
768
|
+
isRetryable: isConnectionError,
|
|
769
|
+
});
|
|
640
770
|
throw error;
|
|
641
771
|
}
|
|
642
772
|
}
|
|
@@ -651,7 +781,7 @@ exports.DeadLetterMessage = {
|
|
|
651
781
|
* @returns The count of created records or null.
|
|
652
782
|
*/
|
|
653
783
|
async updateMany(props, globalClient) {
|
|
654
|
-
var _a, _b, _c, _d, _e;
|
|
784
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
655
785
|
// Maximum number of retries for database connection issues
|
|
656
786
|
const MAX_RETRIES = 3;
|
|
657
787
|
let retryCount = 0;
|
|
@@ -802,21 +932,52 @@ exports.DeadLetterMessage = {
|
|
|
802
932
|
}
|
|
803
933
|
catch (error) {
|
|
804
934
|
lastError = error;
|
|
935
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
936
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
937
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
938
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
939
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
940
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
941
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
942
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
943
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
944
|
+
if (isConstraintViolation) {
|
|
945
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
946
|
+
logger_1.logger.error("Non-retryable constraint violation in updateManyDeadLetterMessage", {
|
|
947
|
+
operation: 'updateManyDeadLetterMessage',
|
|
948
|
+
model: 'DeadLetterMessage',
|
|
949
|
+
error: String(error),
|
|
950
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
951
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
952
|
+
isRetryable: false,
|
|
953
|
+
});
|
|
954
|
+
throw error;
|
|
955
|
+
}
|
|
805
956
|
// Check if this is a database connection error that we should retry
|
|
806
|
-
const isConnectionError = ((
|
|
807
|
-
((
|
|
808
|
-
((
|
|
809
|
-
((
|
|
810
|
-
(error.networkError && ((
|
|
957
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
958
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
959
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
960
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
961
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
811
962
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
812
963
|
retryCount++;
|
|
813
964
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
814
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
965
|
+
logger_1.logger.warn("Database connection error in updateManyDeadLetterMessage, retrying...", {
|
|
966
|
+
operation: 'updateManyDeadLetterMessage',
|
|
967
|
+
model: 'DeadLetterMessage',
|
|
968
|
+
attempt: retryCount,
|
|
969
|
+
maxRetries: MAX_RETRIES,
|
|
970
|
+
});
|
|
815
971
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
816
972
|
continue;
|
|
817
973
|
}
|
|
818
|
-
// Log
|
|
819
|
-
logger_1.logger.error("Database
|
|
974
|
+
// Log structured error details and rethrow
|
|
975
|
+
logger_1.logger.error("Database updateMany operation failed", {
|
|
976
|
+
operation: 'updateManyDeadLetterMessage',
|
|
977
|
+
model: 'DeadLetterMessage',
|
|
978
|
+
error: String(error),
|
|
979
|
+
isRetryable: isConnectionError,
|
|
980
|
+
});
|
|
820
981
|
throw error;
|
|
821
982
|
}
|
|
822
983
|
}
|
|
@@ -831,7 +992,7 @@ exports.DeadLetterMessage = {
|
|
|
831
992
|
* @returns The deleted DeadLetterMessage or null.
|
|
832
993
|
*/
|
|
833
994
|
async delete(props, globalClient) {
|
|
834
|
-
var _a, _b, _c, _d, _e;
|
|
995
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
835
996
|
// Maximum number of retries for database connection issues
|
|
836
997
|
const MAX_RETRIES = 3;
|
|
837
998
|
let retryCount = 0;
|
|
@@ -875,21 +1036,58 @@ exports.DeadLetterMessage = {
|
|
|
875
1036
|
}
|
|
876
1037
|
catch (error) {
|
|
877
1038
|
lastError = error;
|
|
1039
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
1040
|
+
// (e.g., foreign key constraints preventing deletion)
|
|
1041
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
1042
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
1043
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
1044
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
1045
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
1046
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
1047
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('23503')) ||
|
|
1048
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2002')) ||
|
|
1049
|
+
((_j = error.message) === null || _j === void 0 ? void 0 : _j.includes('P2003')) ||
|
|
1050
|
+
((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('P2014'));
|
|
1051
|
+
if (isConstraintViolation) {
|
|
1052
|
+
const constraintMatch = (_l = error.message) === null || _l === void 0 ? void 0 : _l.match(/constraint\s+"([^"]+)"/);
|
|
1053
|
+
logger_1.logger.error("Non-retryable constraint violation in deleteOneDeadLetterMessage", {
|
|
1054
|
+
operation: 'deleteOneDeadLetterMessage',
|
|
1055
|
+
model: 'DeadLetterMessage',
|
|
1056
|
+
error: String(error),
|
|
1057
|
+
recordId: props.id,
|
|
1058
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
1059
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
1060
|
+
isRetryable: false,
|
|
1061
|
+
});
|
|
1062
|
+
throw error;
|
|
1063
|
+
}
|
|
878
1064
|
// Check if this is a database connection error that we should retry
|
|
879
|
-
const isConnectionError = ((
|
|
880
|
-
((
|
|
881
|
-
((
|
|
882
|
-
((
|
|
883
|
-
(error.networkError && ((
|
|
1065
|
+
const isConnectionError = ((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Server has closed the connection')) ||
|
|
1066
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Cannot reach database server')) ||
|
|
1067
|
+
((_p = error.message) === null || _p === void 0 ? void 0 : _p.includes('Connection timed out')) ||
|
|
1068
|
+
((_q = error.message) === null || _q === void 0 ? void 0 : _q.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
1069
|
+
(error.networkError && ((_r = error.networkError.message) === null || _r === void 0 ? void 0 : _r.includes('Failed to fetch')));
|
|
884
1070
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
885
1071
|
retryCount++;
|
|
886
1072
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
887
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1073
|
+
logger_1.logger.warn("Database connection error in deleteOneDeadLetterMessage, retrying...", {
|
|
1074
|
+
operation: 'deleteOneDeadLetterMessage',
|
|
1075
|
+
model: 'DeadLetterMessage',
|
|
1076
|
+
attempt: retryCount,
|
|
1077
|
+
maxRetries: MAX_RETRIES,
|
|
1078
|
+
recordId: props.id,
|
|
1079
|
+
});
|
|
888
1080
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
889
1081
|
continue;
|
|
890
1082
|
}
|
|
891
|
-
// Log
|
|
892
|
-
logger_1.logger.error("Database
|
|
1083
|
+
// Log structured error details and rethrow
|
|
1084
|
+
logger_1.logger.error("Database delete operation failed", {
|
|
1085
|
+
operation: 'deleteOneDeadLetterMessage',
|
|
1086
|
+
model: 'DeadLetterMessage',
|
|
1087
|
+
error: String(error),
|
|
1088
|
+
recordId: props.id,
|
|
1089
|
+
isRetryable: isConnectionError,
|
|
1090
|
+
});
|
|
893
1091
|
throw error;
|
|
894
1092
|
}
|
|
895
1093
|
}
|
|
@@ -959,12 +1157,22 @@ exports.DeadLetterMessage = {
|
|
|
959
1157
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
960
1158
|
retryCount++;
|
|
961
1159
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
962
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1160
|
+
logger_1.logger.warn("Database connection error in getDeadLetterMessage, retrying...", {
|
|
1161
|
+
operation: 'getDeadLetterMessage',
|
|
1162
|
+
model: 'DeadLetterMessage',
|
|
1163
|
+
attempt: retryCount,
|
|
1164
|
+
maxRetries: MAX_RETRIES,
|
|
1165
|
+
});
|
|
963
1166
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
964
1167
|
continue;
|
|
965
1168
|
}
|
|
966
|
-
// Log
|
|
967
|
-
logger_1.logger.error("Database
|
|
1169
|
+
// Log structured error details and rethrow
|
|
1170
|
+
logger_1.logger.error("Database get operation failed", {
|
|
1171
|
+
operation: 'getDeadLetterMessage',
|
|
1172
|
+
model: 'DeadLetterMessage',
|
|
1173
|
+
error: String(error),
|
|
1174
|
+
isRetryable: isConnectionError,
|
|
1175
|
+
});
|
|
968
1176
|
throw error;
|
|
969
1177
|
}
|
|
970
1178
|
}
|
|
@@ -1022,12 +1230,22 @@ exports.DeadLetterMessage = {
|
|
|
1022
1230
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1023
1231
|
retryCount++;
|
|
1024
1232
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1025
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1233
|
+
logger_1.logger.warn("Database connection error in getAllDeadLetterMessage, retrying...", {
|
|
1234
|
+
operation: 'getAllDeadLetterMessage',
|
|
1235
|
+
model: 'DeadLetterMessage',
|
|
1236
|
+
attempt: retryCount,
|
|
1237
|
+
maxRetries: MAX_RETRIES,
|
|
1238
|
+
});
|
|
1026
1239
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1027
1240
|
continue;
|
|
1028
1241
|
}
|
|
1029
|
-
// Log
|
|
1030
|
-
logger_1.logger.error("Database
|
|
1242
|
+
// Log structured error details and rethrow
|
|
1243
|
+
logger_1.logger.error("Database getAll operation failed", {
|
|
1244
|
+
operation: 'getAllDeadLetterMessage',
|
|
1245
|
+
model: 'DeadLetterMessage',
|
|
1246
|
+
error: String(error),
|
|
1247
|
+
isRetryable: isConnectionError,
|
|
1248
|
+
});
|
|
1031
1249
|
throw error;
|
|
1032
1250
|
}
|
|
1033
1251
|
}
|
|
@@ -1104,12 +1322,22 @@ exports.DeadLetterMessage = {
|
|
|
1104
1322
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1105
1323
|
retryCount++;
|
|
1106
1324
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1107
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1325
|
+
logger_1.logger.warn("Database connection error in findManyDeadLetterMessage, retrying...", {
|
|
1326
|
+
operation: 'findManyDeadLetterMessage',
|
|
1327
|
+
model: 'DeadLetterMessage',
|
|
1328
|
+
attempt: retryCount,
|
|
1329
|
+
maxRetries: MAX_RETRIES,
|
|
1330
|
+
});
|
|
1108
1331
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1109
1332
|
continue;
|
|
1110
1333
|
}
|
|
1111
|
-
// Log
|
|
1112
|
-
logger_1.logger.error("Database
|
|
1334
|
+
// Log structured error details and rethrow
|
|
1335
|
+
logger_1.logger.error("Database findMany operation failed", {
|
|
1336
|
+
operation: 'findManyDeadLetterMessage',
|
|
1337
|
+
model: 'DeadLetterMessage',
|
|
1338
|
+
error: String(error),
|
|
1339
|
+
isRetryable: isConnectionError,
|
|
1340
|
+
});
|
|
1113
1341
|
throw error;
|
|
1114
1342
|
}
|
|
1115
1343
|
}
|