@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/Session.cjs
CHANGED
|
@@ -146,7 +146,7 @@ exports.Session = {
|
|
|
146
146
|
* @returns The created Session or null.
|
|
147
147
|
*/
|
|
148
148
|
async create(props, globalClient) {
|
|
149
|
-
var _a, _b, _c, _d, _e;
|
|
149
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
150
150
|
// Maximum number of retries for database connection issues
|
|
151
151
|
const MAX_RETRIES = 3;
|
|
152
152
|
let retryCount = 0;
|
|
@@ -511,21 +511,52 @@ exports.Session = {
|
|
|
511
511
|
}
|
|
512
512
|
catch (error) {
|
|
513
513
|
lastError = error;
|
|
514
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
515
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
516
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
517
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
518
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
519
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
520
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
521
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
522
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
523
|
+
if (isConstraintViolation) {
|
|
524
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
525
|
+
logger_1.logger.error("Non-retryable constraint violation in createOneSession", {
|
|
526
|
+
operation: 'createOneSession',
|
|
527
|
+
model: 'Session',
|
|
528
|
+
error: String(error),
|
|
529
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
530
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
531
|
+
isRetryable: false,
|
|
532
|
+
});
|
|
533
|
+
throw error;
|
|
534
|
+
}
|
|
514
535
|
// Check if this is a database connection error that we should retry
|
|
515
|
-
const isConnectionError = ((
|
|
516
|
-
((
|
|
517
|
-
((
|
|
518
|
-
((
|
|
519
|
-
(error.networkError && ((
|
|
536
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
537
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
538
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
539
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
540
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
520
541
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
521
542
|
retryCount++;
|
|
522
543
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
523
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
544
|
+
logger_1.logger.warn("Database connection error in createOneSession, retrying...", {
|
|
545
|
+
operation: 'createOneSession',
|
|
546
|
+
model: 'Session',
|
|
547
|
+
attempt: retryCount,
|
|
548
|
+
maxRetries: MAX_RETRIES,
|
|
549
|
+
});
|
|
524
550
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
525
551
|
continue;
|
|
526
552
|
}
|
|
527
|
-
// Log
|
|
528
|
-
logger_1.logger.error("Database
|
|
553
|
+
// Log structured error details and rethrow
|
|
554
|
+
logger_1.logger.error("Database create operation failed", {
|
|
555
|
+
operation: 'createOneSession',
|
|
556
|
+
model: 'Session',
|
|
557
|
+
error: String(error),
|
|
558
|
+
isRetryable: isConnectionError,
|
|
559
|
+
});
|
|
529
560
|
throw error;
|
|
530
561
|
}
|
|
531
562
|
}
|
|
@@ -540,7 +571,7 @@ exports.Session = {
|
|
|
540
571
|
* @returns The count of created records or null.
|
|
541
572
|
*/
|
|
542
573
|
async createMany(props, globalClient) {
|
|
543
|
-
var _a, _b, _c, _d, _e;
|
|
574
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
544
575
|
// Maximum number of retries for database connection issues
|
|
545
576
|
const MAX_RETRIES = 3;
|
|
546
577
|
let retryCount = 0;
|
|
@@ -586,21 +617,52 @@ exports.Session = {
|
|
|
586
617
|
}
|
|
587
618
|
catch (error) {
|
|
588
619
|
lastError = error;
|
|
620
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
621
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
622
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
623
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
624
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
625
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
626
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
627
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
628
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
629
|
+
if (isConstraintViolation) {
|
|
630
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
631
|
+
logger_1.logger.error("Non-retryable constraint violation in createManySession", {
|
|
632
|
+
operation: 'createManySession',
|
|
633
|
+
model: 'Session',
|
|
634
|
+
error: String(error),
|
|
635
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
636
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
637
|
+
isRetryable: false,
|
|
638
|
+
});
|
|
639
|
+
throw error;
|
|
640
|
+
}
|
|
589
641
|
// Check if this is a database connection error that we should retry
|
|
590
|
-
const isConnectionError = ((
|
|
591
|
-
((
|
|
592
|
-
((
|
|
593
|
-
((
|
|
594
|
-
(error.networkError && ((
|
|
642
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
643
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
644
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
645
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
646
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
595
647
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
596
648
|
retryCount++;
|
|
597
649
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
598
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
650
|
+
logger_1.logger.warn("Database connection error in createManySession, retrying...", {
|
|
651
|
+
operation: 'createManySession',
|
|
652
|
+
model: 'Session',
|
|
653
|
+
attempt: retryCount,
|
|
654
|
+
maxRetries: MAX_RETRIES,
|
|
655
|
+
});
|
|
599
656
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
600
657
|
continue;
|
|
601
658
|
}
|
|
602
|
-
// Log
|
|
603
|
-
logger_1.logger.error("Database
|
|
659
|
+
// Log structured error details and rethrow
|
|
660
|
+
logger_1.logger.error("Database createMany operation failed", {
|
|
661
|
+
operation: 'createManySession',
|
|
662
|
+
model: 'Session',
|
|
663
|
+
error: String(error),
|
|
664
|
+
isRetryable: isConnectionError,
|
|
665
|
+
});
|
|
604
666
|
throw error;
|
|
605
667
|
}
|
|
606
668
|
}
|
|
@@ -615,7 +677,7 @@ exports.Session = {
|
|
|
615
677
|
* @returns The updated Session or null.
|
|
616
678
|
*/
|
|
617
679
|
async update(props, globalClient) {
|
|
618
|
-
var _a, _b, _c, _d, _e;
|
|
680
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
619
681
|
// Maximum number of retries for database connection issues
|
|
620
682
|
const MAX_RETRIES = 3;
|
|
621
683
|
let retryCount = 0;
|
|
@@ -1758,21 +1820,55 @@ exports.Session = {
|
|
|
1758
1820
|
}
|
|
1759
1821
|
catch (error) {
|
|
1760
1822
|
lastError = error;
|
|
1823
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
1824
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
1825
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
1826
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
1827
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
1828
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
1829
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
1830
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
1831
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
1832
|
+
if (isConstraintViolation) {
|
|
1833
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
1834
|
+
logger_1.logger.error("Non-retryable constraint violation in updateOneSession", {
|
|
1835
|
+
operation: 'updateOneSession',
|
|
1836
|
+
model: 'Session',
|
|
1837
|
+
error: String(error),
|
|
1838
|
+
recordId: props.id,
|
|
1839
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
1840
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
1841
|
+
isRetryable: false,
|
|
1842
|
+
});
|
|
1843
|
+
throw error;
|
|
1844
|
+
}
|
|
1761
1845
|
// Check if this is a database connection error that we should retry
|
|
1762
|
-
const isConnectionError = ((
|
|
1763
|
-
((
|
|
1764
|
-
((
|
|
1765
|
-
((
|
|
1766
|
-
(error.networkError && ((
|
|
1846
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
1847
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
1848
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
1849
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
1850
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
1767
1851
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
1768
1852
|
retryCount++;
|
|
1769
1853
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
1770
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
1854
|
+
logger_1.logger.warn("Database connection error in updateOneSession, retrying...", {
|
|
1855
|
+
operation: 'updateOneSession',
|
|
1856
|
+
model: 'Session',
|
|
1857
|
+
attempt: retryCount,
|
|
1858
|
+
maxRetries: MAX_RETRIES,
|
|
1859
|
+
recordId: props.id,
|
|
1860
|
+
});
|
|
1771
1861
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
1772
1862
|
continue;
|
|
1773
1863
|
}
|
|
1774
|
-
// Log
|
|
1775
|
-
logger_1.logger.error("Database
|
|
1864
|
+
// Log structured error details and rethrow
|
|
1865
|
+
logger_1.logger.error("Database update operation failed", {
|
|
1866
|
+
operation: 'updateOneSession',
|
|
1867
|
+
model: 'Session',
|
|
1868
|
+
error: String(error),
|
|
1869
|
+
recordId: props.id,
|
|
1870
|
+
isRetryable: isConnectionError,
|
|
1871
|
+
});
|
|
1776
1872
|
throw error;
|
|
1777
1873
|
}
|
|
1778
1874
|
}
|
|
@@ -1787,7 +1883,7 @@ exports.Session = {
|
|
|
1787
1883
|
* @returns The updated Session or null.
|
|
1788
1884
|
*/
|
|
1789
1885
|
async upsert(props, globalClient) {
|
|
1790
|
-
var _a, _b, _c, _d, _e;
|
|
1886
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
1791
1887
|
// Maximum number of retries for database connection issues
|
|
1792
1888
|
const MAX_RETRIES = 3;
|
|
1793
1889
|
let retryCount = 0;
|
|
@@ -3244,21 +3340,55 @@ exports.Session = {
|
|
|
3244
3340
|
}
|
|
3245
3341
|
catch (error) {
|
|
3246
3342
|
lastError = error;
|
|
3343
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
3344
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
3345
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
3346
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
3347
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
3348
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
3349
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
3350
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
3351
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
3352
|
+
if (isConstraintViolation) {
|
|
3353
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
3354
|
+
logger_1.logger.error("Non-retryable constraint violation in upsertOneSession", {
|
|
3355
|
+
operation: 'upsertOneSession',
|
|
3356
|
+
model: 'Session',
|
|
3357
|
+
error: String(error),
|
|
3358
|
+
recordId: props.id,
|
|
3359
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
3360
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
3361
|
+
isRetryable: false,
|
|
3362
|
+
});
|
|
3363
|
+
throw error;
|
|
3364
|
+
}
|
|
3247
3365
|
// Check if this is a database connection error that we should retry
|
|
3248
|
-
const isConnectionError = ((
|
|
3249
|
-
((
|
|
3250
|
-
((
|
|
3251
|
-
((
|
|
3252
|
-
(error.networkError && ((
|
|
3366
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
3367
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
3368
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
3369
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
3370
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
3253
3371
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
3254
3372
|
retryCount++;
|
|
3255
3373
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
3256
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
3374
|
+
logger_1.logger.warn("Database connection error in upsertOneSession, retrying...", {
|
|
3375
|
+
operation: 'upsertOneSession',
|
|
3376
|
+
model: 'Session',
|
|
3377
|
+
attempt: retryCount,
|
|
3378
|
+
maxRetries: MAX_RETRIES,
|
|
3379
|
+
recordId: props.id,
|
|
3380
|
+
});
|
|
3257
3381
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
3258
3382
|
continue;
|
|
3259
3383
|
}
|
|
3260
|
-
// Log
|
|
3261
|
-
logger_1.logger.error("Database
|
|
3384
|
+
// Log structured error details and rethrow
|
|
3385
|
+
logger_1.logger.error("Database upsert operation failed", {
|
|
3386
|
+
operation: 'upsertOneSession',
|
|
3387
|
+
model: 'Session',
|
|
3388
|
+
error: String(error),
|
|
3389
|
+
recordId: props.id,
|
|
3390
|
+
isRetryable: isConnectionError,
|
|
3391
|
+
});
|
|
3262
3392
|
throw error;
|
|
3263
3393
|
}
|
|
3264
3394
|
}
|
|
@@ -3273,7 +3403,7 @@ exports.Session = {
|
|
|
3273
3403
|
* @returns The count of created records or null.
|
|
3274
3404
|
*/
|
|
3275
3405
|
async updateMany(props, globalClient) {
|
|
3276
|
-
var _a, _b, _c, _d, _e;
|
|
3406
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
3277
3407
|
// Maximum number of retries for database connection issues
|
|
3278
3408
|
const MAX_RETRIES = 3;
|
|
3279
3409
|
let retryCount = 0;
|
|
@@ -4416,21 +4546,52 @@ exports.Session = {
|
|
|
4416
4546
|
}
|
|
4417
4547
|
catch (error) {
|
|
4418
4548
|
lastError = error;
|
|
4549
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
4550
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
4551
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
4552
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
4553
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
4554
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
4555
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
4556
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('P2002')) ||
|
|
4557
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2003'));
|
|
4558
|
+
if (isConstraintViolation) {
|
|
4559
|
+
const constraintMatch = (_j = error.message) === null || _j === void 0 ? void 0 : _j.match(/constraint\s+"([^"]+)"/);
|
|
4560
|
+
logger_1.logger.error("Non-retryable constraint violation in updateManySession", {
|
|
4561
|
+
operation: 'updateManySession',
|
|
4562
|
+
model: 'Session',
|
|
4563
|
+
error: String(error),
|
|
4564
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
4565
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
4566
|
+
isRetryable: false,
|
|
4567
|
+
});
|
|
4568
|
+
throw error;
|
|
4569
|
+
}
|
|
4419
4570
|
// Check if this is a database connection error that we should retry
|
|
4420
|
-
const isConnectionError = ((
|
|
4421
|
-
((
|
|
4422
|
-
((
|
|
4423
|
-
((
|
|
4424
|
-
(error.networkError && ((
|
|
4571
|
+
const isConnectionError = ((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('Server has closed the connection')) ||
|
|
4572
|
+
((_l = error.message) === null || _l === void 0 ? void 0 : _l.includes('Cannot reach database server')) ||
|
|
4573
|
+
((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Connection timed out')) ||
|
|
4574
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
4575
|
+
(error.networkError && ((_p = error.networkError.message) === null || _p === void 0 ? void 0 : _p.includes('Failed to fetch')));
|
|
4425
4576
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4426
4577
|
retryCount++;
|
|
4427
4578
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4428
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
4579
|
+
logger_1.logger.warn("Database connection error in updateManySession, retrying...", {
|
|
4580
|
+
operation: 'updateManySession',
|
|
4581
|
+
model: 'Session',
|
|
4582
|
+
attempt: retryCount,
|
|
4583
|
+
maxRetries: MAX_RETRIES,
|
|
4584
|
+
});
|
|
4429
4585
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4430
4586
|
continue;
|
|
4431
4587
|
}
|
|
4432
|
-
// Log
|
|
4433
|
-
logger_1.logger.error("Database
|
|
4588
|
+
// Log structured error details and rethrow
|
|
4589
|
+
logger_1.logger.error("Database updateMany operation failed", {
|
|
4590
|
+
operation: 'updateManySession',
|
|
4591
|
+
model: 'Session',
|
|
4592
|
+
error: String(error),
|
|
4593
|
+
isRetryable: isConnectionError,
|
|
4594
|
+
});
|
|
4434
4595
|
throw error;
|
|
4435
4596
|
}
|
|
4436
4597
|
}
|
|
@@ -4445,7 +4606,7 @@ exports.Session = {
|
|
|
4445
4606
|
* @returns The deleted Session or null.
|
|
4446
4607
|
*/
|
|
4447
4608
|
async delete(props, globalClient) {
|
|
4448
|
-
var _a, _b, _c, _d, _e;
|
|
4609
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
4449
4610
|
// Maximum number of retries for database connection issues
|
|
4450
4611
|
const MAX_RETRIES = 3;
|
|
4451
4612
|
let retryCount = 0;
|
|
@@ -4489,21 +4650,58 @@ exports.Session = {
|
|
|
4489
4650
|
}
|
|
4490
4651
|
catch (error) {
|
|
4491
4652
|
lastError = error;
|
|
4653
|
+
// Check for constraint violations FIRST - these are NEVER retryable
|
|
4654
|
+
// (e.g., foreign key constraints preventing deletion)
|
|
4655
|
+
const isConstraintViolation = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('violates check constraint')) ||
|
|
4656
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('violates unique constraint')) ||
|
|
4657
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('violates foreign key constraint')) ||
|
|
4658
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('unique constraint')) ||
|
|
4659
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('23514')) ||
|
|
4660
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('23505')) ||
|
|
4661
|
+
((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('23503')) ||
|
|
4662
|
+
((_h = error.message) === null || _h === void 0 ? void 0 : _h.includes('P2002')) ||
|
|
4663
|
+
((_j = error.message) === null || _j === void 0 ? void 0 : _j.includes('P2003')) ||
|
|
4664
|
+
((_k = error.message) === null || _k === void 0 ? void 0 : _k.includes('P2014'));
|
|
4665
|
+
if (isConstraintViolation) {
|
|
4666
|
+
const constraintMatch = (_l = error.message) === null || _l === void 0 ? void 0 : _l.match(/constraint\s+"([^"]+)"/);
|
|
4667
|
+
logger_1.logger.error("Non-retryable constraint violation in deleteOneSession", {
|
|
4668
|
+
operation: 'deleteOneSession',
|
|
4669
|
+
model: 'Session',
|
|
4670
|
+
error: String(error),
|
|
4671
|
+
recordId: props.id,
|
|
4672
|
+
constraintName: constraintMatch ? constraintMatch[1] : undefined,
|
|
4673
|
+
errorCategory: 'CONSTRAINT_VIOLATION',
|
|
4674
|
+
isRetryable: false,
|
|
4675
|
+
});
|
|
4676
|
+
throw error;
|
|
4677
|
+
}
|
|
4492
4678
|
// Check if this is a database connection error that we should retry
|
|
4493
|
-
const isConnectionError = ((
|
|
4494
|
-
((
|
|
4495
|
-
((
|
|
4496
|
-
((
|
|
4497
|
-
(error.networkError && ((
|
|
4679
|
+
const isConnectionError = ((_m = error.message) === null || _m === void 0 ? void 0 : _m.includes('Server has closed the connection')) ||
|
|
4680
|
+
((_o = error.message) === null || _o === void 0 ? void 0 : _o.includes('Cannot reach database server')) ||
|
|
4681
|
+
((_p = error.message) === null || _p === void 0 ? void 0 : _p.includes('Connection timed out')) ||
|
|
4682
|
+
((_q = error.message) === null || _q === void 0 ? void 0 : _q.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
|
4683
|
+
(error.networkError && ((_r = error.networkError.message) === null || _r === void 0 ? void 0 : _r.includes('Failed to fetch')));
|
|
4498
4684
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4499
4685
|
retryCount++;
|
|
4500
4686
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4501
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
4687
|
+
logger_1.logger.warn("Database connection error in deleteOneSession, retrying...", {
|
|
4688
|
+
operation: 'deleteOneSession',
|
|
4689
|
+
model: 'Session',
|
|
4690
|
+
attempt: retryCount,
|
|
4691
|
+
maxRetries: MAX_RETRIES,
|
|
4692
|
+
recordId: props.id,
|
|
4693
|
+
});
|
|
4502
4694
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4503
4695
|
continue;
|
|
4504
4696
|
}
|
|
4505
|
-
// Log
|
|
4506
|
-
logger_1.logger.error("Database
|
|
4697
|
+
// Log structured error details and rethrow
|
|
4698
|
+
logger_1.logger.error("Database delete operation failed", {
|
|
4699
|
+
operation: 'deleteOneSession',
|
|
4700
|
+
model: 'Session',
|
|
4701
|
+
error: String(error),
|
|
4702
|
+
recordId: props.id,
|
|
4703
|
+
isRetryable: isConnectionError,
|
|
4704
|
+
});
|
|
4507
4705
|
throw error;
|
|
4508
4706
|
}
|
|
4509
4707
|
}
|
|
@@ -4573,12 +4771,22 @@ exports.Session = {
|
|
|
4573
4771
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4574
4772
|
retryCount++;
|
|
4575
4773
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4576
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
4774
|
+
logger_1.logger.warn("Database connection error in getSession, retrying...", {
|
|
4775
|
+
operation: 'getSession',
|
|
4776
|
+
model: 'Session',
|
|
4777
|
+
attempt: retryCount,
|
|
4778
|
+
maxRetries: MAX_RETRIES,
|
|
4779
|
+
});
|
|
4577
4780
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4578
4781
|
continue;
|
|
4579
4782
|
}
|
|
4580
|
-
// Log
|
|
4581
|
-
logger_1.logger.error("Database
|
|
4783
|
+
// Log structured error details and rethrow
|
|
4784
|
+
logger_1.logger.error("Database get operation failed", {
|
|
4785
|
+
operation: 'getSession',
|
|
4786
|
+
model: 'Session',
|
|
4787
|
+
error: String(error),
|
|
4788
|
+
isRetryable: isConnectionError,
|
|
4789
|
+
});
|
|
4582
4790
|
throw error;
|
|
4583
4791
|
}
|
|
4584
4792
|
}
|
|
@@ -4636,12 +4844,22 @@ exports.Session = {
|
|
|
4636
4844
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4637
4845
|
retryCount++;
|
|
4638
4846
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4639
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
4847
|
+
logger_1.logger.warn("Database connection error in getAllSession, retrying...", {
|
|
4848
|
+
operation: 'getAllSession',
|
|
4849
|
+
model: 'Session',
|
|
4850
|
+
attempt: retryCount,
|
|
4851
|
+
maxRetries: MAX_RETRIES,
|
|
4852
|
+
});
|
|
4640
4853
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4641
4854
|
continue;
|
|
4642
4855
|
}
|
|
4643
|
-
// Log
|
|
4644
|
-
logger_1.logger.error("Database
|
|
4856
|
+
// Log structured error details and rethrow
|
|
4857
|
+
logger_1.logger.error("Database getAll operation failed", {
|
|
4858
|
+
operation: 'getAllSession',
|
|
4859
|
+
model: 'Session',
|
|
4860
|
+
error: String(error),
|
|
4861
|
+
isRetryable: isConnectionError,
|
|
4862
|
+
});
|
|
4645
4863
|
throw error;
|
|
4646
4864
|
}
|
|
4647
4865
|
}
|
|
@@ -4718,12 +4936,22 @@ exports.Session = {
|
|
|
4718
4936
|
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
|
4719
4937
|
retryCount++;
|
|
4720
4938
|
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
|
4721
|
-
logger_1.logger.warn("Database connection error, retrying..."
|
|
4939
|
+
logger_1.logger.warn("Database connection error in findManySession, retrying...", {
|
|
4940
|
+
operation: 'findManySession',
|
|
4941
|
+
model: 'Session',
|
|
4942
|
+
attempt: retryCount,
|
|
4943
|
+
maxRetries: MAX_RETRIES,
|
|
4944
|
+
});
|
|
4722
4945
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
4723
4946
|
continue;
|
|
4724
4947
|
}
|
|
4725
|
-
// Log
|
|
4726
|
-
logger_1.logger.error("Database
|
|
4948
|
+
// Log structured error details and rethrow
|
|
4949
|
+
logger_1.logger.error("Database findMany operation failed", {
|
|
4950
|
+
operation: 'findManySession',
|
|
4951
|
+
model: 'Session',
|
|
4952
|
+
error: String(error),
|
|
4953
|
+
isRetryable: isConnectionError,
|
|
4954
|
+
});
|
|
4727
4955
|
throw error;
|
|
4728
4956
|
}
|
|
4729
4957
|
}
|