@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/OptionsPosition.cjs
CHANGED
|
@@ -232,7 +232,7 @@ exports.OptionsPosition = {
|
|
|
232
232
|
* @returns The created OptionsPosition or null.
|
|
233
233
|
*/
|
|
234
234
|
async create(props, globalClient) {
|
|
235
|
-
var _a, _b, _c, _d, _e;
|
|
235
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
236
236
|
// Maximum number of retries for database connection issues
|
|
237
237
|
const MAX_RETRIES = 3;
|
|
238
238
|
let retryCount = 0;
|
|
@@ -523,21 +523,52 @@ exports.OptionsPosition = {
|
|
|
523
523
|
}
|
|
524
524
|
catch (error) {
|
|
525
525
|
lastError = error;
|
|
526
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
527
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
528
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
529
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
530
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
531
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
532
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
533
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
534
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
535
|
+
if (isConstraintViolation) {
|
|
536
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
537
|
+
logger_1.logger.error("Non-retryable constraint violation in createOneOptionsPosition", {
|
|
538
|
+
operation: 'createOneOptionsPosition',
|
|
539
|
+
model: 'OptionsPosition',
|
|
540
|
+
error: String(error),
|
|
541
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
542
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
543
|
+
isRetryable: false,
|
|
544
|
+
});
|
|
545
|
+
throw error;
|
|
546
|
+
}
|
|
526
547
|
// Check if this is a database connection error that we should retry
|
|
527
|
-
const isConnectionError = ((
|
|
528
|
-
((
|
|
529
|
-
((
|
|
530
|
-
((
|
|
531
|
-
(error.networkError && ((
|
|
548
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
549
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
550
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
551
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
552
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
532
553
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
533
554
|
retryCount++;
|
|
534
555
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
535
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
556
|
+
logger_1.logger.warn("Database connection error in createOneOptionsPosition, retrying...", {
|
|
557
|
+
operation: 'createOneOptionsPosition',
|
|
558
|
+
model: 'OptionsPosition',
|
|
559
|
+
attempt: retryCount,
|
|
560
|
+
maxRetries: MAX_RETRIES,
|
|
561
|
+
});
|
|
536
562
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
537
563
|
continue;
|
|
538
564
|
}
|
|
539
|
-
// Log
|
|
540
|
-
logger_1.logger.error("Database
|
|
565
|
+
// Log structured error details and rethrow
|
|
566
|
+
logger_1.logger.error("Database create operation failed", {
|
|
567
|
+
operation: 'createOneOptionsPosition',
|
|
568
|
+
model: 'OptionsPosition',
|
|
569
|
+
error: String(error),
|
|
570
|
+
isRetryable: isConnectionError,
|
|
571
|
+
});
|
|
541
572
|
throw error;
|
|
542
573
|
}
|
|
543
574
|
}
|
|
@@ -552,7 +583,7 @@ exports.OptionsPosition = {
|
|
|
552
583
|
* @returns The count of created records or null.
|
|
553
584
|
*/
|
|
554
585
|
async createMany(props, globalClient) {
|
|
555
|
-
var _a, _b, _c, _d, _e;
|
|
586
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
556
587
|
// Maximum number of retries for database connection issues
|
|
557
588
|
const MAX_RETRIES = 3;
|
|
558
589
|
let retryCount = 0;
|
|
@@ -607,21 +638,52 @@ exports.OptionsPosition = {
|
|
|
607
638
|
}
|
|
608
639
|
catch (error) {
|
|
609
640
|
lastError = error;
|
|
641
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
642
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
643
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
644
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
645
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
646
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
647
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
648
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
649
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
650
|
+
if (isConstraintViolation) {
|
|
651
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
652
|
+
logger_1.logger.error("Non-retryable constraint violation in createManyOptionsPosition", {
|
|
653
|
+
operation: 'createManyOptionsPosition',
|
|
654
|
+
model: 'OptionsPosition',
|
|
655
|
+
error: String(error),
|
|
656
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
657
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
658
|
+
isRetryable: false,
|
|
659
|
+
});
|
|
660
|
+
throw error;
|
|
661
|
+
}
|
|
610
662
|
// Check if this is a database connection error that we should retry
|
|
611
|
-
const isConnectionError = ((
|
|
612
|
-
((
|
|
613
|
-
((
|
|
614
|
-
((
|
|
615
|
-
(error.networkError && ((
|
|
663
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
664
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
665
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
666
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
667
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
616
668
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
617
669
|
retryCount++;
|
|
618
670
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
619
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
671
|
+
logger_1.logger.warn("Database connection error in createManyOptionsPosition, retrying...", {
|
|
672
|
+
operation: 'createManyOptionsPosition',
|
|
673
|
+
model: 'OptionsPosition',
|
|
674
|
+
attempt: retryCount,
|
|
675
|
+
maxRetries: MAX_RETRIES,
|
|
676
|
+
});
|
|
620
677
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
621
678
|
continue;
|
|
622
679
|
}
|
|
623
|
-
// Log
|
|
624
|
-
logger_1.logger.error("Database
|
|
680
|
+
// Log structured error details and rethrow
|
|
681
|
+
logger_1.logger.error("Database createMany operation failed", {
|
|
682
|
+
operation: 'createManyOptionsPosition',
|
|
683
|
+
model: 'OptionsPosition',
|
|
684
|
+
error: String(error),
|
|
685
|
+
isRetryable: isConnectionError,
|
|
686
|
+
});
|
|
625
687
|
throw error;
|
|
626
688
|
}
|
|
627
689
|
}
|
|
@@ -636,7 +698,7 @@ exports.OptionsPosition = {
|
|
|
636
698
|
* @returns The updated OptionsPosition or null.
|
|
637
699
|
*/
|
|
638
700
|
async update(props, globalClient) {
|
|
639
|
-
var _a, _b, _c, _d, _e;
|
|
701
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
640
702
|
// Maximum number of retries for database connection issues
|
|
641
703
|
const MAX_RETRIES = 3;
|
|
642
704
|
let retryCount = 0;
|
|
@@ -1889,21 +1951,55 @@ exports.OptionsPosition = {
|
|
|
1889
1951
|
}
|
|
1890
1952
|
catch (error) {
|
|
1891
1953
|
lastError = error;
|
|
1954
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
1955
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
1956
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
1957
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
1958
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
1959
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
1960
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
1961
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
1962
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
1963
|
+
if (isConstraintViolation) {
|
|
1964
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
1965
|
+
logger_1.logger.error("Non-retryable constraint violation in updateOneOptionsPosition", {
|
|
1966
|
+
operation: 'updateOneOptionsPosition',
|
|
1967
|
+
model: 'OptionsPosition',
|
|
1968
|
+
error: String(error),
|
|
1969
|
+
recordId: props.id,
|
|
1970
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
1971
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
1972
|
+
isRetryable: false,
|
|
1973
|
+
});
|
|
1974
|
+
throw error;
|
|
1975
|
+
}
|
|
1892
1976
|
// Check if this is a database connection error that we should retry
|
|
1893
|
-
const isConnectionError = ((
|
|
1894
|
-
((
|
|
1895
|
-
((
|
|
1896
|
-
((
|
|
1897
|
-
(error.networkError && ((
|
|
1977
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
1978
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
1979
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
1980
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
1981
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
1898
1982
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1899
1983
|
retryCount++;
|
|
1900
1984
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1901
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1985
|
+
logger_1.logger.warn("Database connection error in updateOneOptionsPosition, retrying...", {
|
|
1986
|
+
operation: 'updateOneOptionsPosition',
|
|
1987
|
+
model: 'OptionsPosition',
|
|
1988
|
+
attempt: retryCount,
|
|
1989
|
+
maxRetries: MAX_RETRIES,
|
|
1990
|
+
recordId: props.id,
|
|
1991
|
+
});
|
|
1902
1992
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1903
1993
|
continue;
|
|
1904
1994
|
}
|
|
1905
|
-
// Log
|
|
1906
|
-
logger_1.logger.error("Database
|
|
1995
|
+
// Log structured error details and rethrow
|
|
1996
|
+
logger_1.logger.error("Database update operation failed", {
|
|
1997
|
+
operation: 'updateOneOptionsPosition',
|
|
1998
|
+
model: 'OptionsPosition',
|
|
1999
|
+
error: String(error),
|
|
2000
|
+
recordId: props.id,
|
|
2001
|
+
isRetryable: isConnectionError,
|
|
2002
|
+
});
|
|
1907
2003
|
throw error;
|
|
1908
2004
|
}
|
|
1909
2005
|
}
|
|
@@ -1918,7 +2014,7 @@ exports.OptionsPosition = {
|
|
|
1918
2014
|
* @returns The updated OptionsPosition or null.
|
|
1919
2015
|
*/
|
|
1920
2016
|
async upsert(props, globalClient) {
|
|
1921
|
-
var _a, _b, _c, _d, _e;
|
|
2017
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
1922
2018
|
// Maximum number of retries for database connection issues
|
|
1923
2019
|
const MAX_RETRIES = 3;
|
|
1924
2020
|
let retryCount = 0;
|
|
@@ -3411,21 +3507,55 @@ exports.OptionsPosition = {
|
|
|
3411
3507
|
}
|
|
3412
3508
|
catch (error) {
|
|
3413
3509
|
lastError = error;
|
|
3510
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
3511
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
3512
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
3513
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
3514
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
3515
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
3516
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
3517
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
3518
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
3519
|
+
if (isConstraintViolation) {
|
|
3520
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
3521
|
+
logger_1.logger.error("Non-retryable constraint violation in upsertOneOptionsPosition", {
|
|
3522
|
+
operation: 'upsertOneOptionsPosition',
|
|
3523
|
+
model: 'OptionsPosition',
|
|
3524
|
+
error: String(error),
|
|
3525
|
+
recordId: props.id,
|
|
3526
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
3527
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
3528
|
+
isRetryable: false,
|
|
3529
|
+
});
|
|
3530
|
+
throw error;
|
|
3531
|
+
}
|
|
3414
3532
|
// Check if this is a database connection error that we should retry
|
|
3415
|
-
const isConnectionError = ((
|
|
3416
|
-
((
|
|
3417
|
-
((
|
|
3418
|
-
((
|
|
3419
|
-
(error.networkError && ((
|
|
3533
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
3534
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
3535
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
3536
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
3537
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
3420
3538
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
3421
3539
|
retryCount++;
|
|
3422
3540
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
3423
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
3541
|
+
logger_1.logger.warn("Database connection error in upsertOneOptionsPosition, retrying...", {
|
|
3542
|
+
operation: 'upsertOneOptionsPosition',
|
|
3543
|
+
model: 'OptionsPosition',
|
|
3544
|
+
attempt: retryCount,
|
|
3545
|
+
maxRetries: MAX_RETRIES,
|
|
3546
|
+
recordId: props.id,
|
|
3547
|
+
});
|
|
3424
3548
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
3425
3549
|
continue;
|
|
3426
3550
|
}
|
|
3427
|
-
// Log
|
|
3428
|
-
logger_1.logger.error("Database
|
|
3551
|
+
// Log structured error details and rethrow
|
|
3552
|
+
logger_1.logger.error("Database upsert operation failed", {
|
|
3553
|
+
operation: 'upsertOneOptionsPosition',
|
|
3554
|
+
model: 'OptionsPosition',
|
|
3555
|
+
error: String(error),
|
|
3556
|
+
recordId: props.id,
|
|
3557
|
+
isRetryable: isConnectionError,
|
|
3558
|
+
});
|
|
3429
3559
|
throw error;
|
|
3430
3560
|
}
|
|
3431
3561
|
}
|
|
@@ -3440,7 +3570,7 @@ exports.OptionsPosition = {
|
|
|
3440
3570
|
* @returns The count of created records or null.
|
|
3441
3571
|
*/
|
|
3442
3572
|
async updateMany(props, globalClient) {
|
|
3443
|
-
var _a, _b, _c, _d, _e;
|
|
3573
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
3444
3574
|
// Maximum number of retries for database connection issues
|
|
3445
3575
|
const MAX_RETRIES = 3;
|
|
3446
3576
|
let retryCount = 0;
|
|
@@ -4693,21 +4823,52 @@ exports.OptionsPosition = {
|
|
|
4693
4823
|
}
|
|
4694
4824
|
catch (error) {
|
|
4695
4825
|
lastError = error;
|
|
4826
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
4827
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
4828
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
4829
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
4830
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
4831
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
4832
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
4833
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
4834
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
4835
|
+
if (isConstraintViolation) {
|
|
4836
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
4837
|
+
logger_1.logger.error("Non-retryable constraint violation in updateManyOptionsPosition", {
|
|
4838
|
+
operation: 'updateManyOptionsPosition',
|
|
4839
|
+
model: 'OptionsPosition',
|
|
4840
|
+
error: String(error),
|
|
4841
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
4842
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
4843
|
+
isRetryable: false,
|
|
4844
|
+
});
|
|
4845
|
+
throw error;
|
|
4846
|
+
}
|
|
4696
4847
|
// Check if this is a database connection error that we should retry
|
|
4697
|
-
const isConnectionError = ((
|
|
4698
|
-
((
|
|
4699
|
-
((
|
|
4700
|
-
((
|
|
4701
|
-
(error.networkError && ((
|
|
4848
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
4849
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
4850
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
4851
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
4852
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
4702
4853
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4703
4854
|
retryCount++;
|
|
4704
4855
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4705
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
4856
|
+
logger_1.logger.warn("Database connection error in updateManyOptionsPosition, retrying...", {
|
|
4857
|
+
operation: 'updateManyOptionsPosition',
|
|
4858
|
+
model: 'OptionsPosition',
|
|
4859
|
+
attempt: retryCount,
|
|
4860
|
+
maxRetries: MAX_RETRIES,
|
|
4861
|
+
});
|
|
4706
4862
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4707
4863
|
continue;
|
|
4708
4864
|
}
|
|
4709
|
-
// Log
|
|
4710
|
-
logger_1.logger.error("Database
|
|
4865
|
+
// Log structured error details and rethrow
|
|
4866
|
+
logger_1.logger.error("Database updateMany operation failed", {
|
|
4867
|
+
operation: 'updateManyOptionsPosition',
|
|
4868
|
+
model: 'OptionsPosition',
|
|
4869
|
+
error: String(error),
|
|
4870
|
+
isRetryable: isConnectionError,
|
|
4871
|
+
});
|
|
4711
4872
|
throw error;
|
|
4712
4873
|
}
|
|
4713
4874
|
}
|
|
@@ -4722,7 +4883,7 @@ exports.OptionsPosition = {
|
|
|
4722
4883
|
* @returns The deleted OptionsPosition or null.
|
|
4723
4884
|
*/
|
|
4724
4885
|
async delete(props, globalClient) {
|
|
4725
|
-
var _a, _b, _c, _d, _e;
|
|
4886
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
4726
4887
|
// Maximum number of retries for database connection issues
|
|
4727
4888
|
const MAX_RETRIES = 3;
|
|
4728
4889
|
let retryCount = 0;
|
|
@@ -4766,21 +4927,58 @@ exports.OptionsPosition = {
|
|
|
4766
4927
|
}
|
|
4767
4928
|
catch (error) {
|
|
4768
4929
|
lastError = error;
|
|
4930
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
4931
|
+
// (e.g., foreign key constraints preventing deletion)
|
|
4932
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
4933
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
4934
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
4935
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
4936
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
4937
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
4938
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('23503')) ||
|
|
4939
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2002')) ||
|
|
4940
|
+
((_j = error.message) === null || _j === void 0 ? void 0 : _j.includes('P2003')) ||
|
|
4941
|
+
((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('P2014'));
|
|
4942
|
+
if (isConstraintViolation) {
|
|
4943
|
+
const constraintMatch = (_l = error.message) === null || _l === void 0 ? void 0 : _l.match(/constraint\s+"([^"]+)"/);
|
|
4944
|
+
logger_1.logger.error("Non-retryable constraint violation in deleteOneOptionsPosition", {
|
|
4945
|
+
operation: 'deleteOneOptionsPosition',
|
|
4946
|
+
model: 'OptionsPosition',
|
|
4947
|
+
error: String(error),
|
|
4948
|
+
recordId: props.id,
|
|
4949
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
4950
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
4951
|
+
isRetryable: false,
|
|
4952
|
+
});
|
|
4953
|
+
throw error;
|
|
4954
|
+
}
|
|
4769
4955
|
// Check if this is a database connection error that we should retry
|
|
4770
|
-
const isConnectionError = ((
|
|
4771
|
-
((
|
|
4772
|
-
((
|
|
4773
|
-
((
|
|
4774
|
-
(error.networkError && ((
|
|
4956
|
+
const isConnectionError = ((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Server has closed the connection')) ||
|
|
4957
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Cannot reach database server')) ||
|
|
4958
|
+
((_p = error.message) === null || _p === void 0 ? void 0 : _p.includes('Connection timed out')) ||
|
|
4959
|
+
((_q = error.message) === null || _q === void 0 ? void 0 : _q.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
4960
|
+
(error.networkError && ((_r = error.networkError.message) === null || _r === void 0 ? void 0 : _r.includes('Failed to fetch')));
|
|
4775
4961
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4776
4962
|
retryCount++;
|
|
4777
4963
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4778
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
4964
|
+
logger_1.logger.warn("Database connection error in deleteOneOptionsPosition, retrying...", {
|
|
4965
|
+
operation: 'deleteOneOptionsPosition',
|
|
4966
|
+
model: 'OptionsPosition',
|
|
4967
|
+
attempt: retryCount,
|
|
4968
|
+
maxRetries: MAX_RETRIES,
|
|
4969
|
+
recordId: props.id,
|
|
4970
|
+
});
|
|
4779
4971
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4780
4972
|
continue;
|
|
4781
4973
|
}
|
|
4782
|
-
// Log
|
|
4783
|
-
logger_1.logger.error("Database
|
|
4974
|
+
// Log structured error details and rethrow
|
|
4975
|
+
logger_1.logger.error("Database delete operation failed", {
|
|
4976
|
+
operation: 'deleteOneOptionsPosition',
|
|
4977
|
+
model: 'OptionsPosition',
|
|
4978
|
+
error: String(error),
|
|
4979
|
+
recordId: props.id,
|
|
4980
|
+
isRetryable: isConnectionError,
|
|
4981
|
+
});
|
|
4784
4982
|
throw error;
|
|
4785
4983
|
}
|
|
4786
4984
|
}
|
|
@@ -4853,12 +5051,22 @@ exports.OptionsPosition = {
|
|
|
4853
5051
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4854
5052
|
retryCount++;
|
|
4855
5053
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4856
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
5054
|
+
logger_1.logger.warn("Database connection error in getOptionsPosition, retrying...", {
|
|
5055
|
+
operation: 'getOptionsPosition',
|
|
5056
|
+
model: 'OptionsPosition',
|
|
5057
|
+
attempt: retryCount,
|
|
5058
|
+
maxRetries: MAX_RETRIES,
|
|
5059
|
+
});
|
|
4857
5060
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4858
5061
|
continue;
|
|
4859
5062
|
}
|
|
4860
|
-
// Log
|
|
4861
|
-
logger_1.logger.error("Database
|
|
5063
|
+
// Log structured error details and rethrow
|
|
5064
|
+
logger_1.logger.error("Database get operation failed", {
|
|
5065
|
+
operation: 'getOptionsPosition',
|
|
5066
|
+
model: 'OptionsPosition',
|
|
5067
|
+
error: String(error),
|
|
5068
|
+
isRetryable: isConnectionError,
|
|
5069
|
+
});
|
|
4862
5070
|
throw error;
|
|
4863
5071
|
}
|
|
4864
5072
|
}
|
|
@@ -4916,12 +5124,22 @@ exports.OptionsPosition = {
|
|
|
4916
5124
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4917
5125
|
retryCount++;
|
|
4918
5126
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4919
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
5127
|
+
logger_1.logger.warn("Database connection error in getAllOptionsPosition, retrying...", {
|
|
5128
|
+
operation: 'getAllOptionsPosition',
|
|
5129
|
+
model: 'OptionsPosition',
|
|
5130
|
+
attempt: retryCount,
|
|
5131
|
+
maxRetries: MAX_RETRIES,
|
|
5132
|
+
});
|
|
4920
5133
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4921
5134
|
continue;
|
|
4922
5135
|
}
|
|
4923
|
-
// Log
|
|
4924
|
-
logger_1.logger.error("Database
|
|
5136
|
+
// Log structured error details and rethrow
|
|
5137
|
+
logger_1.logger.error("Database getAll operation failed", {
|
|
5138
|
+
operation: 'getAllOptionsPosition',
|
|
5139
|
+
model: 'OptionsPosition',
|
|
5140
|
+
error: String(error),
|
|
5141
|
+
isRetryable: isConnectionError,
|
|
5142
|
+
});
|
|
4925
5143
|
throw error;
|
|
4926
5144
|
}
|
|
4927
5145
|
}
|
|
@@ -5001,12 +5219,22 @@ exports.OptionsPosition = {
|
|
|
5001
5219
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
5002
5220
|
retryCount++;
|
|
5003
5221
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
5004
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
5222
|
+
logger_1.logger.warn("Database connection error in findManyOptionsPosition, retrying...", {
|
|
5223
|
+
operation: 'findManyOptionsPosition',
|
|
5224
|
+
model: 'OptionsPosition',
|
|
5225
|
+
attempt: retryCount,
|
|
5226
|
+
maxRetries: MAX_RETRIES,
|
|
5227
|
+
});
|
|
5005
5228
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
5006
5229
|
continue;
|
|
5007
5230
|
}
|
|
5008
|
-
// Log
|
|
5009
|
-
logger_1.logger.error("Database
|
|
5231
|
+
// Log structured error details and rethrow
|
|
5232
|
+
logger_1.logger.error("Database findMany operation failed", {
|
|
5233
|
+
operation: 'findManyOptionsPosition',
|
|
5234
|
+
model: 'OptionsPosition',
|
|
5235
|
+
error: String(error),
|
|
5236
|
+
isRetryable: isConnectionError,
|
|
5237
|
+
});
|
|
5010
5238
|
throw error;
|
|
5011
5239
|
}
|
|
5012
5240
|
}
|