adaptic-backend 1.0.339 → 1.0.341
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/Account.cjs +2543 -2265
- package/Account.d.ts +19 -2
- package/Action.cjs +1115 -683
- package/Action.d.ts +19 -2
- package/Alert.cjs +2626 -2348
- package/Alert.d.ts +19 -2
- package/Allocation.cjs +2578 -2300
- package/Allocation.d.ts +19 -2
- package/AlpacaAccount.cjs +2383 -2105
- package/AlpacaAccount.d.ts +19 -2
- package/Asset.cjs +1813 -1535
- package/Asset.d.ts +19 -2
- package/Authenticator.cjs +2568 -2290
- package/Authenticator.d.ts +19 -2
- package/Customer.cjs +2495 -2217
- package/Customer.d.ts +19 -2
- package/EconomicEvent.cjs +645 -367
- package/EconomicEvent.d.ts +19 -2
- package/MarketSentiment.cjs +618 -340
- package/MarketSentiment.d.ts +19 -2
- package/NewsArticle.cjs +1933 -1655
- package/NewsArticle.d.ts +19 -2
- package/NewsArticleAssetSentiment.cjs +1842 -1564
- package/NewsArticleAssetSentiment.d.ts +19 -2
- package/ScheduledOptionOrder.cjs +594 -316
- package/ScheduledOptionOrder.d.ts +19 -2
- package/Session.cjs +2570 -2292
- package/Session.d.ts +19 -2
- package/Trade.cjs +1087 -666
- package/Trade.d.ts +19 -2
- package/User.cjs +2288 -2010
- package/User.d.ts +19 -2
- package/VerificationToken.cjs +606 -328
- package/VerificationToken.d.ts +19 -2
- package/esm/Account.d.ts +19 -2
- package/esm/Account.d.ts.map +1 -1
- package/esm/Account.js.map +1 -1
- package/esm/Account.mjs +2534 -2263
- package/esm/Action.d.ts +19 -2
- package/esm/Action.d.ts.map +1 -1
- package/esm/Action.js.map +1 -1
- package/esm/Action.mjs +1106 -681
- package/esm/Alert.d.ts +19 -2
- package/esm/Alert.d.ts.map +1 -1
- package/esm/Alert.js.map +1 -1
- package/esm/Alert.mjs +2617 -2346
- package/esm/Allocation.d.ts +19 -2
- package/esm/Allocation.d.ts.map +1 -1
- package/esm/Allocation.js.map +1 -1
- package/esm/Allocation.mjs +2569 -2298
- package/esm/AlpacaAccount.d.ts +19 -2
- package/esm/AlpacaAccount.d.ts.map +1 -1
- package/esm/AlpacaAccount.js.map +1 -1
- package/esm/AlpacaAccount.mjs +2374 -2103
- package/esm/Asset.d.ts +19 -2
- package/esm/Asset.d.ts.map +1 -1
- package/esm/Asset.js.map +1 -1
- package/esm/Asset.mjs +1804 -1533
- package/esm/Authenticator.d.ts +19 -2
- package/esm/Authenticator.d.ts.map +1 -1
- package/esm/Authenticator.js.map +1 -1
- package/esm/Authenticator.mjs +2559 -2288
- package/esm/Customer.d.ts +19 -2
- package/esm/Customer.d.ts.map +1 -1
- package/esm/Customer.js.map +1 -1
- package/esm/Customer.mjs +2486 -2215
- package/esm/EconomicEvent.d.ts +19 -2
- package/esm/EconomicEvent.d.ts.map +1 -1
- package/esm/EconomicEvent.js.map +1 -1
- package/esm/EconomicEvent.mjs +636 -365
- package/esm/MarketSentiment.d.ts +19 -2
- package/esm/MarketSentiment.d.ts.map +1 -1
- package/esm/MarketSentiment.js.map +1 -1
- package/esm/MarketSentiment.mjs +609 -338
- package/esm/NewsArticle.d.ts +19 -2
- package/esm/NewsArticle.d.ts.map +1 -1
- package/esm/NewsArticle.js.map +1 -1
- package/esm/NewsArticle.mjs +1924 -1653
- package/esm/NewsArticleAssetSentiment.d.ts +19 -2
- package/esm/NewsArticleAssetSentiment.d.ts.map +1 -1
- package/esm/NewsArticleAssetSentiment.js.map +1 -1
- package/esm/NewsArticleAssetSentiment.mjs +1833 -1562
- package/esm/ScheduledOptionOrder.d.ts +19 -2
- package/esm/ScheduledOptionOrder.d.ts.map +1 -1
- package/esm/ScheduledOptionOrder.js.map +1 -1
- package/esm/ScheduledOptionOrder.mjs +585 -314
- package/esm/Session.d.ts +19 -2
- package/esm/Session.d.ts.map +1 -1
- package/esm/Session.js.map +1 -1
- package/esm/Session.mjs +2561 -2290
- package/esm/Trade.d.ts +19 -2
- package/esm/Trade.d.ts.map +1 -1
- package/esm/Trade.js.map +1 -1
- package/esm/Trade.mjs +1078 -664
- package/esm/User.d.ts +19 -2
- package/esm/User.d.ts.map +1 -1
- package/esm/User.js.map +1 -1
- package/esm/User.mjs +2279 -2008
- package/esm/VerificationToken.d.ts +19 -2
- package/esm/VerificationToken.d.ts.map +1 -1
- package/esm/VerificationToken.js.map +1 -1
- package/esm/VerificationToken.mjs +597 -326
- package/esm/generated/selectionSets/Trade.d.ts +1 -1
- package/esm/generated/selectionSets/Trade.d.ts.map +1 -1
- package/esm/generated/selectionSets/Trade.js.map +1 -1
- package/esm/generated/selectionSets/Trade.mjs +14 -3
- package/esm/generated/typeStrings/Trade.d.ts +1 -1
- package/esm/generated/typeStrings/Trade.d.ts.map +1 -1
- package/esm/generated/typeStrings/Trade.js.map +1 -1
- package/esm/generated/typeStrings/Trade.mjs +0 -6
- package/esm/generated/typeStrings/index.d.ts +1 -1
- package/esm/generated/typegraphql-prisma/enhance.js.map +1 -1
- package/esm/generated/typegraphql-prisma/enhance.mjs +24 -24
- package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts +15 -4
- package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.js.map +1 -1
- package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.mjs +14 -3
- package/esm/generated/typegraphql-prisma/models/Trade.d.ts +56 -12
- package/esm/generated/typegraphql-prisma/models/Trade.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/models/Trade.js.map +1 -1
- package/esm/generated/typegraphql-prisma/models/Trade.mjs +154 -33
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts +9 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.mjs +49 -7
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.mjs +93 -16
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.mjs +98 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.mjs +98 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.mjs +98 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.mjs +93 -16
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.mjs +93 -16
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.mjs +97 -20
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.mjs +97 -20
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts +16 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.mjs +100 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts +9 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.mjs +49 -7
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts +16 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.mjs +100 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts +16 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.mjs +100 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts +16 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.mjs +100 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts +16 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.mjs +100 -21
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts +16 -3
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.mjs +100 -21
- package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.mjs +98 -21
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts +9 -3
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.mjs +49 -7
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.mjs +93 -16
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.mjs +98 -21
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.mjs +98 -21
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts +14 -3
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.mjs +98 -21
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts +9 -3
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.js.map +1 -1
- package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.mjs +49 -7
- package/esm/prismaClient.d.ts +4 -5
- package/esm/prismaClient.d.ts.map +1 -1
- package/esm/prismaClient.js.map +1 -1
- package/esm/prismaClient.mjs +13 -11
- package/generated/typeStrings/Trade.cjs +0 -6
- package/generated/typeStrings/Trade.d.ts +1 -1
- package/generated/typeStrings/Trade.d.ts.map +1 -1
- package/generated/typeStrings/Trade.js.map +1 -1
- package/generated/typeStrings/index.d.ts +1 -1
- package/generated/typegraphql-prisma/enhance.cjs +24 -24
- package/generated/typegraphql-prisma/enhance.js.map +1 -1
- package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.cjs +14 -3
- package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts +15 -4
- package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts.map +1 -1
- package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.js.map +1 -1
- package/generated/typegraphql-prisma/models/Trade.cjs +98 -21
- package/generated/typegraphql-prisma/models/Trade.d.ts +56 -12
- package/generated/typegraphql-prisma/models/Trade.d.ts.map +1 -1
- package/generated/typegraphql-prisma/models/Trade.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.cjs +40 -4
- package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts +9 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.cjs +79 -13
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.cjs +84 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.cjs +84 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.cjs +84 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.cjs +79 -13
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.cjs +79 -13
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.cjs +83 -17
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.cjs +83 -17
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.cjs +86 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts +16 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.cjs +40 -4
- package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts +9 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.cjs +86 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts +16 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.cjs +86 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts +16 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.cjs +86 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts +16 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.cjs +86 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts +16 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.cjs +86 -18
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts +16 -3
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.cjs +84 -18
- package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.cjs +40 -4
- package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts +9 -3
- package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.cjs +79 -13
- package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.cjs +84 -18
- package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.cjs +84 -18
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.cjs +84 -18
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts +14 -3
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.js.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.cjs +40 -4
- package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts +9 -3
- package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts.map +1 -1
- package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.js.map +1 -1
- package/package.json +1 -1
- package/prismaClient.cjs +13 -11
- package/prismaClient.d.ts +4 -5
- package/server.cjs +37 -5
package/Action.cjs
CHANGED
@@ -27,785 +27,1217 @@ exports.Action = {
|
|
27
27
|
* @param client - Apollo Client instance.
|
28
28
|
* @returns The created Action or null.
|
29
29
|
*/
|
30
|
+
/**
|
31
|
+
* Create a new Action record.
|
32
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
33
|
+
* @param props - Properties for the new record.
|
34
|
+
* @param globalClient - Apollo Client instance.
|
35
|
+
* @returns The created Action or null.
|
36
|
+
*/
|
30
37
|
async create(props, globalClient) {
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
?
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
:
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
38
|
+
var _a, _b, _c, _d, _e;
|
39
|
+
// Maximum number of retries for database connection issues
|
40
|
+
const MAX_RETRIES = 3;
|
41
|
+
let retryCount = 0;
|
42
|
+
let lastError = null;
|
43
|
+
// Retry loop to handle potential database connection issues
|
44
|
+
while (retryCount < MAX_RETRIES) {
|
45
|
+
try {
|
46
|
+
const [modules, client] = await Promise.all([
|
47
|
+
(0, client_1.getApolloModules)(),
|
48
|
+
globalClient
|
49
|
+
? Promise.resolve(globalClient)
|
50
|
+
: client_1.client
|
51
|
+
]);
|
52
|
+
const { gql, ApolloError } = modules;
|
53
|
+
const CREATE_ONE_ACTION = gql `
|
54
|
+
mutation createOneAction($data: ActionCreateInput!) {
|
55
|
+
createOneAction(data: $data) {
|
56
|
+
${selectionSet}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
`;
|
60
|
+
const variables = {
|
61
|
+
data: {
|
62
|
+
sequence: props.sequence !== undefined ? props.sequence : undefined,
|
63
|
+
type: props.type !== undefined ? props.type : undefined,
|
64
|
+
primary: props.primary !== undefined ? props.primary : undefined,
|
65
|
+
note: props.note !== undefined ? props.note : undefined,
|
66
|
+
status: props.status !== undefined ? props.status : undefined,
|
67
|
+
alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
|
68
|
+
trade: props.trade ?
|
69
|
+
typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && Object.keys(props.trade)[0] === 'id'
|
70
|
+
? { connect: {
|
71
|
+
id: props.trade.id
|
72
|
+
}
|
73
|
+
}
|
74
|
+
: { connectOrCreate: {
|
75
|
+
where: {
|
76
|
+
id: props.trade.id !== undefined ? props.trade.id : undefined,
|
77
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
78
|
+
equals: props.trade.alpacaAccountId
|
79
|
+
} : undefined,
|
80
|
+
symbol: props.trade.symbol !== undefined ? {
|
81
|
+
equals: props.trade.symbol
|
82
|
+
} : undefined,
|
83
|
+
},
|
84
|
+
create: {
|
85
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
|
86
|
+
signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
|
87
|
+
strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
|
88
|
+
analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
|
89
|
+
summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
|
90
|
+
confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
|
91
|
+
timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
|
92
|
+
status: props.trade.status !== undefined ? props.trade.status : undefined,
|
93
|
+
symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
|
94
|
+
entryPrice: props.trade.entryPrice !== undefined ? props.trade.entryPrice : undefined,
|
95
|
+
exitPrice: props.trade.exitPrice !== undefined ? props.trade.exitPrice : undefined,
|
96
|
+
entryQty: props.trade.entryQty !== undefined ? props.trade.entryQty : undefined,
|
97
|
+
exitQty: props.trade.exitQty !== undefined ? props.trade.exitQty : undefined,
|
98
|
+
entryValue: props.trade.entryValue !== undefined ? props.trade.entryValue : undefined,
|
99
|
+
exitValue: props.trade.exitValue !== undefined ? props.trade.exitValue : undefined,
|
100
|
+
entryTime: props.trade.entryTime !== undefined ? props.trade.entryTime : undefined,
|
101
|
+
exitTime: props.trade.exitTime !== undefined ? props.trade.exitTime : undefined,
|
102
|
+
pnlAmount: props.trade.pnlAmount !== undefined ? props.trade.pnlAmount : undefined,
|
103
|
+
pnlPercent: props.trade.pnlPercent !== undefined ? props.trade.pnlPercent : undefined,
|
104
|
+
durationMinutes: props.trade.durationMinutes !== undefined ? props.trade.durationMinutes : undefined,
|
105
|
+
marketPhase: props.trade.marketPhase !== undefined ? props.trade.marketPhase : undefined,
|
106
|
+
marketVolatility: props.trade.marketVolatility !== undefined ? props.trade.marketVolatility : undefined,
|
107
|
+
thresholdsJson: props.trade.thresholdsJson !== undefined ? props.trade.thresholdsJson : undefined,
|
108
|
+
},
|
109
|
+
}
|
110
|
+
} : undefined,
|
111
|
+
},
|
112
|
+
};
|
113
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
114
|
+
const response = await client.mutate({
|
115
|
+
mutation: CREATE_ONE_ACTION,
|
116
|
+
variables: filteredVariables,
|
117
|
+
// Don't cache mutations, but ensure we're using the freshest context
|
118
|
+
fetchPolicy: 'no-cache'
|
119
|
+
});
|
120
|
+
if (response.errors && response.errors.length > 0)
|
121
|
+
throw new Error(response.errors[0].message);
|
122
|
+
if (response && response.data && response.data.createOneAction) {
|
123
|
+
return response.data.createOneAction;
|
124
|
+
}
|
125
|
+
else {
|
126
|
+
return null;
|
127
|
+
}
|
94
128
|
}
|
95
|
-
|
96
|
-
|
129
|
+
catch (error) {
|
130
|
+
lastError = error;
|
131
|
+
// Check if this is a database connection error that we should retry
|
132
|
+
const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
|
133
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
|
134
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
|
135
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
136
|
+
(error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
|
137
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
138
|
+
retryCount++;
|
139
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
140
|
+
console.warn("Database connection error, retrying...");
|
141
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
142
|
+
continue;
|
143
|
+
}
|
144
|
+
// Log the error and rethrow
|
145
|
+
console.error("Database error occurred:", error);
|
146
|
+
throw error;
|
97
147
|
}
|
98
148
|
}
|
99
|
-
|
100
|
-
|
101
|
-
throw error;
|
102
|
-
}
|
149
|
+
// If we exhausted retries, throw the last error
|
150
|
+
throw lastError;
|
103
151
|
},
|
104
152
|
/**
|
105
153
|
* Create multiple Action records.
|
154
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
106
155
|
* @param props - Array of Action objects for the new records.
|
107
156
|
* @param globalClient - Apollo Client instance.
|
108
157
|
* @returns The count of created records or null.
|
109
158
|
*/
|
110
159
|
async createMany(props, globalClient) {
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
note: prop.note !== undefined ? prop.note : undefined,
|
131
|
-
status: prop.status !== undefined ? prop.status : undefined,
|
132
|
-
alpacaOrderId: prop.alpacaOrderId !== undefined ? prop.alpacaOrderId : undefined,
|
133
|
-
})),
|
134
|
-
};
|
135
|
-
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
136
|
-
try {
|
137
|
-
const response = await client.mutate({ mutation: CREATE_MANY_ACTION, variables: filteredVariables });
|
138
|
-
if (response.errors && response.errors.length > 0)
|
139
|
-
throw new Error(response.errors[0].message);
|
140
|
-
if (response && response.data && response.data.createManyAction) {
|
141
|
-
return response.data.createManyAction;
|
160
|
+
var _a, _b, _c, _d, _e;
|
161
|
+
// Maximum number of retries for database connection issues
|
162
|
+
const MAX_RETRIES = 3;
|
163
|
+
let retryCount = 0;
|
164
|
+
let lastError = null;
|
165
|
+
// Retry loop to handle potential database connection issues
|
166
|
+
while (retryCount < MAX_RETRIES) {
|
167
|
+
try {
|
168
|
+
const [modules, client] = await Promise.all([
|
169
|
+
(0, client_1.getApolloModules)(),
|
170
|
+
globalClient
|
171
|
+
? Promise.resolve(globalClient)
|
172
|
+
: client_1.client
|
173
|
+
]);
|
174
|
+
const { gql, ApolloError } = modules;
|
175
|
+
const CREATE_MANY_ACTION = gql `
|
176
|
+
mutation createManyAction($data: [ActionCreateManyInput!]!) {
|
177
|
+
createManyAction(data: $data) {
|
178
|
+
count
|
142
179
|
}
|
143
|
-
|
144
|
-
|
180
|
+
}`;
|
181
|
+
const variables = {
|
182
|
+
data: props.map(prop => ({
|
183
|
+
sequence: prop.sequence !== undefined ? prop.sequence : undefined,
|
184
|
+
tradeId: prop.tradeId !== undefined ? prop.tradeId : undefined,
|
185
|
+
type: prop.type !== undefined ? prop.type : undefined,
|
186
|
+
primary: prop.primary !== undefined ? prop.primary : undefined,
|
187
|
+
note: prop.note !== undefined ? prop.note : undefined,
|
188
|
+
status: prop.status !== undefined ? prop.status : undefined,
|
189
|
+
alpacaOrderId: prop.alpacaOrderId !== undefined ? prop.alpacaOrderId : undefined,
|
190
|
+
})),
|
191
|
+
};
|
192
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
193
|
+
const response = await client.mutate({
|
194
|
+
mutation: CREATE_MANY_ACTION,
|
195
|
+
variables: filteredVariables,
|
196
|
+
// Don't cache mutations, but ensure we're using the freshest context
|
197
|
+
fetchPolicy: 'no-cache'
|
198
|
+
});
|
199
|
+
if (response.errors && response.errors.length > 0)
|
200
|
+
throw new Error(response.errors[0].message);
|
201
|
+
if (response && response.data && response.data.createManyAction) {
|
202
|
+
return response.data.createManyAction;
|
203
|
+
}
|
204
|
+
else {
|
205
|
+
return null;
|
206
|
+
}
|
207
|
+
}
|
208
|
+
catch (error) {
|
209
|
+
lastError = error;
|
210
|
+
// Check if this is a database connection error that we should retry
|
211
|
+
const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
|
212
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
|
213
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
|
214
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
215
|
+
(error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
|
216
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
217
|
+
retryCount++;
|
218
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
219
|
+
console.warn("Database connection error, retrying...");
|
220
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
221
|
+
continue;
|
222
|
+
}
|
223
|
+
// Log the error and rethrow
|
224
|
+
console.error("Database error occurred:", error);
|
225
|
+
throw error;
|
145
226
|
}
|
146
227
|
}
|
147
|
-
|
148
|
-
|
149
|
-
throw error;
|
150
|
-
}
|
228
|
+
// If we exhausted retries, throw the last error
|
229
|
+
throw lastError;
|
151
230
|
},
|
152
231
|
/**
|
153
232
|
* Update a single Action record.
|
233
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
154
234
|
* @param props - Properties to update.
|
155
235
|
* @param globalClient - Apollo Client instance.
|
156
236
|
* @returns The updated Action or null.
|
157
237
|
*/
|
158
238
|
async update(props, globalClient) {
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
} : undefined,
|
179
|
-
},
|
180
|
-
data: {
|
181
|
-
id: props.id !== undefined ? {
|
182
|
-
set: props.id
|
183
|
-
} : undefined,
|
184
|
-
sequence: props.sequence !== undefined ? {
|
185
|
-
set: props.sequence
|
186
|
-
} : undefined,
|
187
|
-
type: props.type !== undefined ? {
|
188
|
-
set: props.type
|
189
|
-
} : undefined,
|
190
|
-
primary: props.primary !== undefined ? {
|
191
|
-
set: props.primary
|
192
|
-
} : undefined,
|
193
|
-
note: props.note !== undefined ? {
|
194
|
-
set: props.note
|
195
|
-
} : undefined,
|
196
|
-
status: props.status !== undefined ? {
|
197
|
-
set: props.status
|
198
|
-
} : undefined,
|
199
|
-
createdAt: props.createdAt !== undefined ? {
|
200
|
-
set: props.createdAt
|
201
|
-
} : undefined,
|
202
|
-
updatedAt: props.updatedAt !== undefined ? {
|
203
|
-
set: props.updatedAt
|
204
|
-
} : undefined,
|
205
|
-
alpacaOrderId: props.alpacaOrderId !== undefined ? {
|
206
|
-
set: props.alpacaOrderId
|
207
|
-
} : undefined,
|
208
|
-
trade: props.trade ?
|
209
|
-
typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && (Object.keys(props.trade)[0] === 'id' || Object.keys(props.trade)[0] === 'symbol')
|
210
|
-
? {
|
211
|
-
connect: {
|
212
|
-
id: props.trade.id
|
213
|
-
}
|
214
|
-
} : { upsert: {
|
215
|
-
where: {
|
216
|
-
id: props.trade.id !== undefined ? {
|
217
|
-
equals: props.trade.id
|
218
|
-
} : undefined,
|
219
|
-
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
220
|
-
equals: props.trade.alpacaAccountId
|
221
|
-
} : undefined,
|
222
|
-
symbol: props.trade.symbol !== undefined ? {
|
223
|
-
equals: props.trade.symbol
|
224
|
-
} : undefined,
|
225
|
-
},
|
226
|
-
update: {
|
227
|
-
id: props.trade.id !== undefined ? {
|
228
|
-
set: props.trade.id
|
229
|
-
} : undefined,
|
230
|
-
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
231
|
-
set: props.trade.alpacaAccountId
|
232
|
-
} : undefined,
|
233
|
-
qty: props.trade.qty !== undefined ? {
|
234
|
-
set: props.trade.qty
|
235
|
-
} : undefined,
|
236
|
-
price: props.trade.price !== undefined ? {
|
237
|
-
set: props.trade.price
|
238
|
-
} : undefined,
|
239
|
-
total: props.trade.total !== undefined ? {
|
240
|
-
set: props.trade.total
|
241
|
-
} : undefined,
|
242
|
-
signal: props.trade.signal !== undefined ? {
|
243
|
-
set: props.trade.signal
|
244
|
-
} : undefined,
|
245
|
-
strategy: props.trade.strategy !== undefined ? {
|
246
|
-
set: props.trade.strategy
|
247
|
-
} : undefined,
|
248
|
-
analysis: props.trade.analysis !== undefined ? {
|
249
|
-
set: props.trade.analysis
|
250
|
-
} : undefined,
|
251
|
-
summary: props.trade.summary !== undefined ? {
|
252
|
-
set: props.trade.summary
|
253
|
-
} : undefined,
|
254
|
-
confidence: props.trade.confidence !== undefined ? {
|
255
|
-
set: props.trade.confidence
|
256
|
-
} : undefined,
|
257
|
-
timestamp: props.trade.timestamp !== undefined ? {
|
258
|
-
set: props.trade.timestamp
|
259
|
-
} : undefined,
|
260
|
-
status: props.trade.status !== undefined ? {
|
261
|
-
set: props.trade.status
|
262
|
-
} : undefined,
|
263
|
-
symbol: props.trade.symbol !== undefined ? {
|
264
|
-
set: props.trade.symbol
|
265
|
-
} : undefined,
|
266
|
-
},
|
267
|
-
create: {
|
268
|
-
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
|
269
|
-
qty: props.trade.qty !== undefined ? props.trade.qty : undefined,
|
270
|
-
price: props.trade.price !== undefined ? props.trade.price : undefined,
|
271
|
-
total: props.trade.total !== undefined ? props.trade.total : undefined,
|
272
|
-
signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
|
273
|
-
strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
|
274
|
-
analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
|
275
|
-
summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
|
276
|
-
confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
|
277
|
-
timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
|
278
|
-
status: props.trade.status !== undefined ? props.trade.status : undefined,
|
279
|
-
symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
|
280
|
-
},
|
281
|
-
}
|
282
|
-
} : undefined,
|
283
|
-
},
|
284
|
-
};
|
285
|
-
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
286
|
-
try {
|
287
|
-
const response = await client.mutate({ mutation: UPDATE_ONE_ACTION, variables: filteredVariables });
|
288
|
-
if (response.errors && response.errors.length > 0)
|
289
|
-
throw new Error(response.errors[0].message);
|
290
|
-
if (response && response.data && response.data.updateOneAction) {
|
291
|
-
return response.data.updateOneAction;
|
239
|
+
var _a, _b, _c, _d, _e;
|
240
|
+
// Maximum number of retries for database connection issues
|
241
|
+
const MAX_RETRIES = 3;
|
242
|
+
let retryCount = 0;
|
243
|
+
let lastError = null;
|
244
|
+
// Retry loop to handle potential database connection issues
|
245
|
+
while (retryCount < MAX_RETRIES) {
|
246
|
+
try {
|
247
|
+
const [modules, client] = await Promise.all([
|
248
|
+
(0, client_1.getApolloModules)(),
|
249
|
+
globalClient
|
250
|
+
? Promise.resolve(globalClient)
|
251
|
+
: client_1.client
|
252
|
+
]);
|
253
|
+
const { gql, ApolloError } = modules;
|
254
|
+
const UPDATE_ONE_ACTION = gql `
|
255
|
+
mutation updateOneAction($data: ActionUpdateInput!, $where: ActionWhereUniqueInput!) {
|
256
|
+
updateOneAction(data: $data, where: $where) {
|
257
|
+
${selectionSet}
|
292
258
|
}
|
293
|
-
|
294
|
-
|
259
|
+
}`;
|
260
|
+
const variables = {
|
261
|
+
where: {
|
262
|
+
id: props.id !== undefined ? props.id : undefined,
|
263
|
+
alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
|
264
|
+
tradeId: props.tradeId !== undefined ? {
|
265
|
+
equals: props.tradeId
|
266
|
+
} : undefined,
|
267
|
+
},
|
268
|
+
data: {
|
269
|
+
id: props.id !== undefined ? {
|
270
|
+
set: props.id
|
271
|
+
} : undefined,
|
272
|
+
sequence: props.sequence !== undefined ? {
|
273
|
+
set: props.sequence
|
274
|
+
} : undefined,
|
275
|
+
type: props.type !== undefined ? {
|
276
|
+
set: props.type
|
277
|
+
} : undefined,
|
278
|
+
primary: props.primary !== undefined ? {
|
279
|
+
set: props.primary
|
280
|
+
} : undefined,
|
281
|
+
note: props.note !== undefined ? {
|
282
|
+
set: props.note
|
283
|
+
} : undefined,
|
284
|
+
status: props.status !== undefined ? {
|
285
|
+
set: props.status
|
286
|
+
} : undefined,
|
287
|
+
createdAt: props.createdAt !== undefined ? {
|
288
|
+
set: props.createdAt
|
289
|
+
} : undefined,
|
290
|
+
updatedAt: props.updatedAt !== undefined ? {
|
291
|
+
set: props.updatedAt
|
292
|
+
} : undefined,
|
293
|
+
alpacaOrderId: props.alpacaOrderId !== undefined ? {
|
294
|
+
set: props.alpacaOrderId
|
295
|
+
} : undefined,
|
296
|
+
trade: props.trade ?
|
297
|
+
typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && (Object.keys(props.trade)[0] === 'id' || Object.keys(props.trade)[0] === 'symbol')
|
298
|
+
? {
|
299
|
+
connect: {
|
300
|
+
id: props.trade.id
|
301
|
+
}
|
302
|
+
} : { upsert: {
|
303
|
+
where: {
|
304
|
+
id: props.trade.id !== undefined ? {
|
305
|
+
equals: props.trade.id
|
306
|
+
} : undefined,
|
307
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
308
|
+
equals: props.trade.alpacaAccountId
|
309
|
+
} : undefined,
|
310
|
+
symbol: props.trade.symbol !== undefined ? {
|
311
|
+
equals: props.trade.symbol
|
312
|
+
} : undefined,
|
313
|
+
},
|
314
|
+
update: {
|
315
|
+
id: props.trade.id !== undefined ? {
|
316
|
+
set: props.trade.id
|
317
|
+
} : undefined,
|
318
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
319
|
+
set: props.trade.alpacaAccountId
|
320
|
+
} : undefined,
|
321
|
+
signal: props.trade.signal !== undefined ? {
|
322
|
+
set: props.trade.signal
|
323
|
+
} : undefined,
|
324
|
+
strategy: props.trade.strategy !== undefined ? {
|
325
|
+
set: props.trade.strategy
|
326
|
+
} : undefined,
|
327
|
+
analysis: props.trade.analysis !== undefined ? {
|
328
|
+
set: props.trade.analysis
|
329
|
+
} : undefined,
|
330
|
+
summary: props.trade.summary !== undefined ? {
|
331
|
+
set: props.trade.summary
|
332
|
+
} : undefined,
|
333
|
+
confidence: props.trade.confidence !== undefined ? {
|
334
|
+
set: props.trade.confidence
|
335
|
+
} : undefined,
|
336
|
+
timestamp: props.trade.timestamp !== undefined ? {
|
337
|
+
set: props.trade.timestamp
|
338
|
+
} : undefined,
|
339
|
+
status: props.trade.status !== undefined ? {
|
340
|
+
set: props.trade.status
|
341
|
+
} : undefined,
|
342
|
+
symbol: props.trade.symbol !== undefined ? {
|
343
|
+
set: props.trade.symbol
|
344
|
+
} : undefined,
|
345
|
+
entryPrice: props.trade.entryPrice !== undefined ? {
|
346
|
+
set: props.trade.entryPrice
|
347
|
+
} : undefined,
|
348
|
+
exitPrice: props.trade.exitPrice !== undefined ? {
|
349
|
+
set: props.trade.exitPrice
|
350
|
+
} : undefined,
|
351
|
+
entryQty: props.trade.entryQty !== undefined ? {
|
352
|
+
set: props.trade.entryQty
|
353
|
+
} : undefined,
|
354
|
+
exitQty: props.trade.exitQty !== undefined ? {
|
355
|
+
set: props.trade.exitQty
|
356
|
+
} : undefined,
|
357
|
+
entryValue: props.trade.entryValue !== undefined ? {
|
358
|
+
set: props.trade.entryValue
|
359
|
+
} : undefined,
|
360
|
+
exitValue: props.trade.exitValue !== undefined ? {
|
361
|
+
set: props.trade.exitValue
|
362
|
+
} : undefined,
|
363
|
+
entryTime: props.trade.entryTime !== undefined ? {
|
364
|
+
set: props.trade.entryTime
|
365
|
+
} : undefined,
|
366
|
+
exitTime: props.trade.exitTime !== undefined ? {
|
367
|
+
set: props.trade.exitTime
|
368
|
+
} : undefined,
|
369
|
+
pnlAmount: props.trade.pnlAmount !== undefined ? {
|
370
|
+
set: props.trade.pnlAmount
|
371
|
+
} : undefined,
|
372
|
+
pnlPercent: props.trade.pnlPercent !== undefined ? {
|
373
|
+
set: props.trade.pnlPercent
|
374
|
+
} : undefined,
|
375
|
+
durationMinutes: props.trade.durationMinutes !== undefined ? {
|
376
|
+
set: props.trade.durationMinutes
|
377
|
+
} : undefined,
|
378
|
+
marketPhase: props.trade.marketPhase !== undefined ? {
|
379
|
+
set: props.trade.marketPhase
|
380
|
+
} : undefined,
|
381
|
+
marketVolatility: props.trade.marketVolatility !== undefined ? {
|
382
|
+
set: props.trade.marketVolatility
|
383
|
+
} : undefined,
|
384
|
+
thresholdsJson: props.trade.thresholdsJson !== undefined ? {
|
385
|
+
set: props.trade.thresholdsJson
|
386
|
+
} : undefined,
|
387
|
+
},
|
388
|
+
create: {
|
389
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
|
390
|
+
signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
|
391
|
+
strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
|
392
|
+
analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
|
393
|
+
summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
|
394
|
+
confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
|
395
|
+
timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
|
396
|
+
status: props.trade.status !== undefined ? props.trade.status : undefined,
|
397
|
+
symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
|
398
|
+
entryPrice: props.trade.entryPrice !== undefined ? props.trade.entryPrice : undefined,
|
399
|
+
exitPrice: props.trade.exitPrice !== undefined ? props.trade.exitPrice : undefined,
|
400
|
+
entryQty: props.trade.entryQty !== undefined ? props.trade.entryQty : undefined,
|
401
|
+
exitQty: props.trade.exitQty !== undefined ? props.trade.exitQty : undefined,
|
402
|
+
entryValue: props.trade.entryValue !== undefined ? props.trade.entryValue : undefined,
|
403
|
+
exitValue: props.trade.exitValue !== undefined ? props.trade.exitValue : undefined,
|
404
|
+
entryTime: props.trade.entryTime !== undefined ? props.trade.entryTime : undefined,
|
405
|
+
exitTime: props.trade.exitTime !== undefined ? props.trade.exitTime : undefined,
|
406
|
+
pnlAmount: props.trade.pnlAmount !== undefined ? props.trade.pnlAmount : undefined,
|
407
|
+
pnlPercent: props.trade.pnlPercent !== undefined ? props.trade.pnlPercent : undefined,
|
408
|
+
durationMinutes: props.trade.durationMinutes !== undefined ? props.trade.durationMinutes : undefined,
|
409
|
+
marketPhase: props.trade.marketPhase !== undefined ? props.trade.marketPhase : undefined,
|
410
|
+
marketVolatility: props.trade.marketVolatility !== undefined ? props.trade.marketVolatility : undefined,
|
411
|
+
thresholdsJson: props.trade.thresholdsJson !== undefined ? props.trade.thresholdsJson : undefined,
|
412
|
+
},
|
413
|
+
}
|
414
|
+
} : undefined,
|
415
|
+
},
|
416
|
+
};
|
417
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
418
|
+
const response = await client.mutate({
|
419
|
+
mutation: UPDATE_ONE_ACTION,
|
420
|
+
variables: filteredVariables,
|
421
|
+
// Don't cache mutations, but ensure we're using the freshest context
|
422
|
+
fetchPolicy: 'no-cache'
|
423
|
+
});
|
424
|
+
if (response.errors && response.errors.length > 0)
|
425
|
+
throw new Error(response.errors[0].message);
|
426
|
+
if (response && response.data && response.data.updateOneAction) {
|
427
|
+
return response.data.updateOneAction;
|
428
|
+
}
|
429
|
+
else {
|
430
|
+
return null;
|
431
|
+
}
|
432
|
+
}
|
433
|
+
catch (error) {
|
434
|
+
lastError = error;
|
435
|
+
// Check if this is a database connection error that we should retry
|
436
|
+
const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
|
437
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
|
438
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
|
439
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
440
|
+
(error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
|
441
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
442
|
+
retryCount++;
|
443
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
444
|
+
console.warn("Database connection error, retrying...");
|
445
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
446
|
+
continue;
|
447
|
+
}
|
448
|
+
// Log the error and rethrow
|
449
|
+
console.error("Database error occurred:", error);
|
450
|
+
throw error;
|
295
451
|
}
|
296
452
|
}
|
297
|
-
|
298
|
-
|
299
|
-
throw error;
|
300
|
-
}
|
453
|
+
// If we exhausted retries, throw the last error
|
454
|
+
throw lastError;
|
301
455
|
},
|
302
456
|
/**
|
303
457
|
* Upsert a single Action record.
|
458
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
304
459
|
* @param props - Properties to update.
|
305
460
|
* @param globalClient - Apollo Client instance.
|
306
461
|
* @returns The updated Action or null.
|
307
462
|
*/
|
308
463
|
async upsert(props, globalClient) {
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
|
337
|
-
trade: props.trade ?
|
338
|
-
typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && Object.keys(props.trade)[0] === 'id'
|
339
|
-
? { connect: {
|
340
|
-
id: props.trade.id
|
341
|
-
}
|
342
|
-
}
|
343
|
-
: { connectOrCreate: {
|
344
|
-
where: {
|
345
|
-
id: props.trade.id !== undefined ? props.trade.id : undefined,
|
346
|
-
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
347
|
-
equals: props.trade.alpacaAccountId
|
348
|
-
} : undefined,
|
349
|
-
symbol: props.trade.symbol !== undefined ? {
|
350
|
-
equals: props.trade.symbol
|
351
|
-
} : undefined,
|
352
|
-
},
|
353
|
-
create: {
|
354
|
-
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
|
355
|
-
qty: props.trade.qty !== undefined ? props.trade.qty : undefined,
|
356
|
-
price: props.trade.price !== undefined ? props.trade.price : undefined,
|
357
|
-
total: props.trade.total !== undefined ? props.trade.total : undefined,
|
358
|
-
signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
|
359
|
-
strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
|
360
|
-
analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
|
361
|
-
summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
|
362
|
-
confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
|
363
|
-
timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
|
364
|
-
status: props.trade.status !== undefined ? props.trade.status : undefined,
|
365
|
-
symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
|
366
|
-
},
|
367
|
-
}
|
464
|
+
var _a, _b, _c, _d, _e;
|
465
|
+
// Maximum number of retries for database connection issues
|
466
|
+
const MAX_RETRIES = 3;
|
467
|
+
let retryCount = 0;
|
468
|
+
let lastError = null;
|
469
|
+
// Retry loop to handle potential database connection issues
|
470
|
+
while (retryCount < MAX_RETRIES) {
|
471
|
+
try {
|
472
|
+
const [modules, client] = await Promise.all([
|
473
|
+
(0, client_1.getApolloModules)(),
|
474
|
+
globalClient
|
475
|
+
? Promise.resolve(globalClient)
|
476
|
+
: client_1.client
|
477
|
+
]);
|
478
|
+
const { gql, ApolloError } = modules;
|
479
|
+
const UPSERT_ONE_ACTION = gql `
|
480
|
+
mutation upsertOneAction($where: ActionWhereUniqueInput!, $create: ActionCreateInput!, $update: ActionUpdateInput!) {
|
481
|
+
upsertOneAction(where: $where, create: $create, update: $update) {
|
482
|
+
${selectionSet}
|
483
|
+
}
|
484
|
+
}`;
|
485
|
+
const variables = {
|
486
|
+
where: {
|
487
|
+
id: props.id !== undefined ? props.id : undefined,
|
488
|
+
alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
|
489
|
+
tradeId: props.tradeId !== undefined ? {
|
490
|
+
equals: props.tradeId
|
368
491
|
} : undefined,
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
} : undefined,
|
420
|
-
total: props.trade.total !== undefined ? {
|
421
|
-
set: props.trade.total
|
422
|
-
} : undefined,
|
423
|
-
signal: props.trade.signal !== undefined ? {
|
424
|
-
set: props.trade.signal
|
425
|
-
} : undefined,
|
426
|
-
strategy: props.trade.strategy !== undefined ? {
|
427
|
-
set: props.trade.strategy
|
428
|
-
} : undefined,
|
429
|
-
analysis: props.trade.analysis !== undefined ? {
|
430
|
-
set: props.trade.analysis
|
431
|
-
} : undefined,
|
432
|
-
summary: props.trade.summary !== undefined ? {
|
433
|
-
set: props.trade.summary
|
434
|
-
} : undefined,
|
435
|
-
confidence: props.trade.confidence !== undefined ? {
|
436
|
-
set: props.trade.confidence
|
492
|
+
},
|
493
|
+
create: {
|
494
|
+
sequence: props.sequence !== undefined ? props.sequence : undefined,
|
495
|
+
type: props.type !== undefined ? props.type : undefined,
|
496
|
+
primary: props.primary !== undefined ? props.primary : undefined,
|
497
|
+
note: props.note !== undefined ? props.note : undefined,
|
498
|
+
status: props.status !== undefined ? props.status : undefined,
|
499
|
+
alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
|
500
|
+
trade: props.trade ?
|
501
|
+
typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && Object.keys(props.trade)[0] === 'id'
|
502
|
+
? { connect: {
|
503
|
+
id: props.trade.id
|
504
|
+
}
|
505
|
+
}
|
506
|
+
: { connectOrCreate: {
|
507
|
+
where: {
|
508
|
+
id: props.trade.id !== undefined ? props.trade.id : undefined,
|
509
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
510
|
+
equals: props.trade.alpacaAccountId
|
511
|
+
} : undefined,
|
512
|
+
symbol: props.trade.symbol !== undefined ? {
|
513
|
+
equals: props.trade.symbol
|
514
|
+
} : undefined,
|
515
|
+
},
|
516
|
+
create: {
|
517
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
|
518
|
+
signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
|
519
|
+
strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
|
520
|
+
analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
|
521
|
+
summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
|
522
|
+
confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
|
523
|
+
timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
|
524
|
+
status: props.trade.status !== undefined ? props.trade.status : undefined,
|
525
|
+
symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
|
526
|
+
entryPrice: props.trade.entryPrice !== undefined ? props.trade.entryPrice : undefined,
|
527
|
+
exitPrice: props.trade.exitPrice !== undefined ? props.trade.exitPrice : undefined,
|
528
|
+
entryQty: props.trade.entryQty !== undefined ? props.trade.entryQty : undefined,
|
529
|
+
exitQty: props.trade.exitQty !== undefined ? props.trade.exitQty : undefined,
|
530
|
+
entryValue: props.trade.entryValue !== undefined ? props.trade.entryValue : undefined,
|
531
|
+
exitValue: props.trade.exitValue !== undefined ? props.trade.exitValue : undefined,
|
532
|
+
entryTime: props.trade.entryTime !== undefined ? props.trade.entryTime : undefined,
|
533
|
+
exitTime: props.trade.exitTime !== undefined ? props.trade.exitTime : undefined,
|
534
|
+
pnlAmount: props.trade.pnlAmount !== undefined ? props.trade.pnlAmount : undefined,
|
535
|
+
pnlPercent: props.trade.pnlPercent !== undefined ? props.trade.pnlPercent : undefined,
|
536
|
+
durationMinutes: props.trade.durationMinutes !== undefined ? props.trade.durationMinutes : undefined,
|
537
|
+
marketPhase: props.trade.marketPhase !== undefined ? props.trade.marketPhase : undefined,
|
538
|
+
marketVolatility: props.trade.marketVolatility !== undefined ? props.trade.marketVolatility : undefined,
|
539
|
+
thresholdsJson: props.trade.thresholdsJson !== undefined ? props.trade.thresholdsJson : undefined,
|
540
|
+
},
|
541
|
+
}
|
437
542
|
} : undefined,
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
543
|
+
},
|
544
|
+
update: {
|
545
|
+
sequence: props.sequence !== undefined ? {
|
546
|
+
set: props.sequence
|
547
|
+
} : undefined,
|
548
|
+
type: props.type !== undefined ? {
|
549
|
+
set: props.type
|
550
|
+
} : undefined,
|
551
|
+
primary: props.primary !== undefined ? {
|
552
|
+
set: props.primary
|
553
|
+
} : undefined,
|
554
|
+
note: props.note !== undefined ? {
|
555
|
+
set: props.note
|
556
|
+
} : undefined,
|
557
|
+
status: props.status !== undefined ? {
|
558
|
+
set: props.status
|
559
|
+
} : undefined,
|
560
|
+
alpacaOrderId: props.alpacaOrderId !== undefined ? {
|
561
|
+
set: props.alpacaOrderId
|
562
|
+
} : undefined,
|
563
|
+
trade: props.trade ?
|
564
|
+
typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && (Object.keys(props.trade)[0] === 'id' || Object.keys(props.trade)[0] === 'symbol')
|
565
|
+
? {
|
566
|
+
connect: {
|
567
|
+
id: props.trade.id
|
568
|
+
}
|
569
|
+
} : { upsert: {
|
570
|
+
where: {
|
571
|
+
id: props.trade.id !== undefined ? {
|
572
|
+
equals: props.trade.id
|
573
|
+
} : undefined,
|
574
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
575
|
+
equals: props.trade.alpacaAccountId
|
576
|
+
} : undefined,
|
577
|
+
symbol: props.trade.symbol !== undefined ? {
|
578
|
+
equals: props.trade.symbol
|
579
|
+
} : undefined,
|
580
|
+
},
|
581
|
+
update: {
|
582
|
+
id: props.trade.id !== undefined ? {
|
583
|
+
set: props.trade.id
|
584
|
+
} : undefined,
|
585
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
|
586
|
+
set: props.trade.alpacaAccountId
|
587
|
+
} : undefined,
|
588
|
+
signal: props.trade.signal !== undefined ? {
|
589
|
+
set: props.trade.signal
|
590
|
+
} : undefined,
|
591
|
+
strategy: props.trade.strategy !== undefined ? {
|
592
|
+
set: props.trade.strategy
|
593
|
+
} : undefined,
|
594
|
+
analysis: props.trade.analysis !== undefined ? {
|
595
|
+
set: props.trade.analysis
|
596
|
+
} : undefined,
|
597
|
+
summary: props.trade.summary !== undefined ? {
|
598
|
+
set: props.trade.summary
|
599
|
+
} : undefined,
|
600
|
+
confidence: props.trade.confidence !== undefined ? {
|
601
|
+
set: props.trade.confidence
|
602
|
+
} : undefined,
|
603
|
+
timestamp: props.trade.timestamp !== undefined ? {
|
604
|
+
set: props.trade.timestamp
|
605
|
+
} : undefined,
|
606
|
+
status: props.trade.status !== undefined ? {
|
607
|
+
set: props.trade.status
|
608
|
+
} : undefined,
|
609
|
+
symbol: props.trade.symbol !== undefined ? {
|
610
|
+
set: props.trade.symbol
|
611
|
+
} : undefined,
|
612
|
+
entryPrice: props.trade.entryPrice !== undefined ? {
|
613
|
+
set: props.trade.entryPrice
|
614
|
+
} : undefined,
|
615
|
+
exitPrice: props.trade.exitPrice !== undefined ? {
|
616
|
+
set: props.trade.exitPrice
|
617
|
+
} : undefined,
|
618
|
+
entryQty: props.trade.entryQty !== undefined ? {
|
619
|
+
set: props.trade.entryQty
|
620
|
+
} : undefined,
|
621
|
+
exitQty: props.trade.exitQty !== undefined ? {
|
622
|
+
set: props.trade.exitQty
|
623
|
+
} : undefined,
|
624
|
+
entryValue: props.trade.entryValue !== undefined ? {
|
625
|
+
set: props.trade.entryValue
|
626
|
+
} : undefined,
|
627
|
+
exitValue: props.trade.exitValue !== undefined ? {
|
628
|
+
set: props.trade.exitValue
|
629
|
+
} : undefined,
|
630
|
+
entryTime: props.trade.entryTime !== undefined ? {
|
631
|
+
set: props.trade.entryTime
|
632
|
+
} : undefined,
|
633
|
+
exitTime: props.trade.exitTime !== undefined ? {
|
634
|
+
set: props.trade.exitTime
|
635
|
+
} : undefined,
|
636
|
+
pnlAmount: props.trade.pnlAmount !== undefined ? {
|
637
|
+
set: props.trade.pnlAmount
|
638
|
+
} : undefined,
|
639
|
+
pnlPercent: props.trade.pnlPercent !== undefined ? {
|
640
|
+
set: props.trade.pnlPercent
|
641
|
+
} : undefined,
|
642
|
+
durationMinutes: props.trade.durationMinutes !== undefined ? {
|
643
|
+
set: props.trade.durationMinutes
|
644
|
+
} : undefined,
|
645
|
+
marketPhase: props.trade.marketPhase !== undefined ? {
|
646
|
+
set: props.trade.marketPhase
|
647
|
+
} : undefined,
|
648
|
+
marketVolatility: props.trade.marketVolatility !== undefined ? {
|
649
|
+
set: props.trade.marketVolatility
|
650
|
+
} : undefined,
|
651
|
+
thresholdsJson: props.trade.thresholdsJson !== undefined ? {
|
652
|
+
set: props.trade.thresholdsJson
|
653
|
+
} : undefined,
|
654
|
+
},
|
655
|
+
create: {
|
656
|
+
alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
|
657
|
+
signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
|
658
|
+
strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
|
659
|
+
analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
|
660
|
+
summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
|
661
|
+
confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
|
662
|
+
timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
|
663
|
+
status: props.trade.status !== undefined ? props.trade.status : undefined,
|
664
|
+
symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
|
665
|
+
entryPrice: props.trade.entryPrice !== undefined ? props.trade.entryPrice : undefined,
|
666
|
+
exitPrice: props.trade.exitPrice !== undefined ? props.trade.exitPrice : undefined,
|
667
|
+
entryQty: props.trade.entryQty !== undefined ? props.trade.entryQty : undefined,
|
668
|
+
exitQty: props.trade.exitQty !== undefined ? props.trade.exitQty : undefined,
|
669
|
+
entryValue: props.trade.entryValue !== undefined ? props.trade.entryValue : undefined,
|
670
|
+
exitValue: props.trade.exitValue !== undefined ? props.trade.exitValue : undefined,
|
671
|
+
entryTime: props.trade.entryTime !== undefined ? props.trade.entryTime : undefined,
|
672
|
+
exitTime: props.trade.exitTime !== undefined ? props.trade.exitTime : undefined,
|
673
|
+
pnlAmount: props.trade.pnlAmount !== undefined ? props.trade.pnlAmount : undefined,
|
674
|
+
pnlPercent: props.trade.pnlPercent !== undefined ? props.trade.pnlPercent : undefined,
|
675
|
+
durationMinutes: props.trade.durationMinutes !== undefined ? props.trade.durationMinutes : undefined,
|
676
|
+
marketPhase: props.trade.marketPhase !== undefined ? props.trade.marketPhase : undefined,
|
677
|
+
marketVolatility: props.trade.marketVolatility !== undefined ? props.trade.marketVolatility : undefined,
|
678
|
+
thresholdsJson: props.trade.thresholdsJson !== undefined ? props.trade.thresholdsJson : undefined,
|
679
|
+
},
|
680
|
+
}
|
681
|
+
} : undefined,
|
682
|
+
},
|
683
|
+
};
|
684
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
685
|
+
const response = await client.mutate({
|
686
|
+
mutation: UPSERT_ONE_ACTION,
|
687
|
+
variables: filteredVariables,
|
688
|
+
// Don't cache mutations, but ensure we're using the freshest context
|
689
|
+
fetchPolicy: 'no-cache'
|
690
|
+
});
|
691
|
+
if (response.errors && response.errors.length > 0)
|
692
|
+
throw new Error(response.errors[0].message);
|
693
|
+
if (response && response.data && response.data.upsertOneAction) {
|
694
|
+
return response.data.upsertOneAction;
|
695
|
+
}
|
696
|
+
else {
|
697
|
+
return null;
|
698
|
+
}
|
473
699
|
}
|
474
|
-
|
475
|
-
|
700
|
+
catch (error) {
|
701
|
+
lastError = error;
|
702
|
+
// Check if this is a database connection error that we should retry
|
703
|
+
const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
|
704
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
|
705
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
|
706
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
707
|
+
(error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
|
708
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
709
|
+
retryCount++;
|
710
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
711
|
+
console.warn("Database connection error, retrying...");
|
712
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
713
|
+
continue;
|
714
|
+
}
|
715
|
+
// Log the error and rethrow
|
716
|
+
console.error("Database error occurred:", error);
|
717
|
+
throw error;
|
476
718
|
}
|
477
719
|
}
|
478
|
-
|
479
|
-
|
480
|
-
throw error;
|
481
|
-
}
|
720
|
+
// If we exhausted retries, throw the last error
|
721
|
+
throw lastError;
|
482
722
|
},
|
483
723
|
/**
|
484
724
|
* Update multiple Action records.
|
725
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
485
726
|
* @param props - Array of Action objects for the updated records.
|
486
727
|
* @param globalClient - Apollo Client instance.
|
487
728
|
* @returns The count of created records or null.
|
488
729
|
*/
|
489
730
|
async updateMany(props, globalClient) {
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
? {
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
731
|
+
var _a, _b, _c, _d, _e;
|
732
|
+
// Maximum number of retries for database connection issues
|
733
|
+
const MAX_RETRIES = 3;
|
734
|
+
let retryCount = 0;
|
735
|
+
let lastError = null;
|
736
|
+
// Retry loop to handle potential database connection issues
|
737
|
+
while (retryCount < MAX_RETRIES) {
|
738
|
+
try {
|
739
|
+
const [modules, client] = await Promise.all([
|
740
|
+
(0, client_1.getApolloModules)(),
|
741
|
+
globalClient
|
742
|
+
? Promise.resolve(globalClient)
|
743
|
+
: client_1.client
|
744
|
+
]);
|
745
|
+
const { gql, ApolloError } = modules;
|
746
|
+
const UPDATE_MANY_ACTION = gql `
|
747
|
+
mutation updateManyAction($data: [ActionCreateManyInput!]!) {
|
748
|
+
updateManyAction(data: $data) {
|
749
|
+
count
|
750
|
+
}
|
751
|
+
}`;
|
752
|
+
const variables = props.map(prop => ({
|
753
|
+
where: {
|
754
|
+
id: prop.id !== undefined ? prop.id : undefined,
|
755
|
+
alpacaOrderId: prop.alpacaOrderId !== undefined ? prop.alpacaOrderId : undefined,
|
756
|
+
tradeId: prop.tradeId !== undefined ? {
|
757
|
+
equals: prop.tradeId
|
758
|
+
} : undefined,
|
759
|
+
},
|
760
|
+
data: {
|
761
|
+
id: prop.id !== undefined ? {
|
762
|
+
set: prop.id
|
763
|
+
} : undefined,
|
764
|
+
sequence: prop.sequence !== undefined ? {
|
765
|
+
set: prop.sequence
|
766
|
+
} : undefined,
|
767
|
+
type: prop.type !== undefined ? {
|
768
|
+
set: prop.type
|
769
|
+
} : undefined,
|
770
|
+
primary: prop.primary !== undefined ? {
|
771
|
+
set: prop.primary
|
772
|
+
} : undefined,
|
773
|
+
note: prop.note !== undefined ? {
|
774
|
+
set: prop.note
|
775
|
+
} : undefined,
|
776
|
+
status: prop.status !== undefined ? {
|
777
|
+
set: prop.status
|
778
|
+
} : undefined,
|
779
|
+
createdAt: prop.createdAt !== undefined ? {
|
780
|
+
set: prop.createdAt
|
781
|
+
} : undefined,
|
782
|
+
updatedAt: prop.updatedAt !== undefined ? {
|
783
|
+
set: prop.updatedAt
|
784
|
+
} : undefined,
|
785
|
+
alpacaOrderId: prop.alpacaOrderId !== undefined ? {
|
786
|
+
set: prop.alpacaOrderId
|
787
|
+
} : undefined,
|
788
|
+
trade: prop.trade ?
|
789
|
+
typeof prop.trade === 'object' && Object.keys(prop.trade).length === 1 && (Object.keys(prop.trade)[0] === 'id' || Object.keys(prop.trade)[0] === 'symbol')
|
790
|
+
? {
|
791
|
+
connect: {
|
792
|
+
id: prop.trade.id
|
793
|
+
}
|
794
|
+
} : { upsert: {
|
795
|
+
where: {
|
796
|
+
id: prop.trade.id !== undefined ? {
|
797
|
+
equals: prop.trade.id
|
798
|
+
} : undefined,
|
799
|
+
alpacaAccountId: prop.trade.alpacaAccountId !== undefined ? {
|
800
|
+
equals: prop.trade.alpacaAccountId
|
801
|
+
} : undefined,
|
802
|
+
symbol: prop.trade.symbol !== undefined ? {
|
803
|
+
equals: prop.trade.symbol
|
804
|
+
} : undefined,
|
805
|
+
},
|
806
|
+
update: {
|
807
|
+
id: prop.trade.id !== undefined ? {
|
808
|
+
set: prop.trade.id
|
809
|
+
} : undefined,
|
810
|
+
alpacaAccountId: prop.trade.alpacaAccountId !== undefined ? {
|
811
|
+
set: prop.trade.alpacaAccountId
|
812
|
+
} : undefined,
|
813
|
+
signal: prop.trade.signal !== undefined ? {
|
814
|
+
set: prop.trade.signal
|
815
|
+
} : undefined,
|
816
|
+
strategy: prop.trade.strategy !== undefined ? {
|
817
|
+
set: prop.trade.strategy
|
818
|
+
} : undefined,
|
819
|
+
analysis: prop.trade.analysis !== undefined ? {
|
820
|
+
set: prop.trade.analysis
|
821
|
+
} : undefined,
|
822
|
+
summary: prop.trade.summary !== undefined ? {
|
823
|
+
set: prop.trade.summary
|
824
|
+
} : undefined,
|
825
|
+
confidence: prop.trade.confidence !== undefined ? {
|
826
|
+
set: prop.trade.confidence
|
827
|
+
} : undefined,
|
828
|
+
timestamp: prop.trade.timestamp !== undefined ? {
|
829
|
+
set: prop.trade.timestamp
|
830
|
+
} : undefined,
|
831
|
+
status: prop.trade.status !== undefined ? {
|
832
|
+
set: prop.trade.status
|
833
|
+
} : undefined,
|
834
|
+
symbol: prop.trade.symbol !== undefined ? {
|
835
|
+
set: prop.trade.symbol
|
836
|
+
} : undefined,
|
837
|
+
entryPrice: prop.trade.entryPrice !== undefined ? {
|
838
|
+
set: prop.trade.entryPrice
|
839
|
+
} : undefined,
|
840
|
+
exitPrice: prop.trade.exitPrice !== undefined ? {
|
841
|
+
set: prop.trade.exitPrice
|
842
|
+
} : undefined,
|
843
|
+
entryQty: prop.trade.entryQty !== undefined ? {
|
844
|
+
set: prop.trade.entryQty
|
845
|
+
} : undefined,
|
846
|
+
exitQty: prop.trade.exitQty !== undefined ? {
|
847
|
+
set: prop.trade.exitQty
|
848
|
+
} : undefined,
|
849
|
+
entryValue: prop.trade.entryValue !== undefined ? {
|
850
|
+
set: prop.trade.entryValue
|
851
|
+
} : undefined,
|
852
|
+
exitValue: prop.trade.exitValue !== undefined ? {
|
853
|
+
set: prop.trade.exitValue
|
854
|
+
} : undefined,
|
855
|
+
entryTime: prop.trade.entryTime !== undefined ? {
|
856
|
+
set: prop.trade.entryTime
|
857
|
+
} : undefined,
|
858
|
+
exitTime: prop.trade.exitTime !== undefined ? {
|
859
|
+
set: prop.trade.exitTime
|
860
|
+
} : undefined,
|
861
|
+
pnlAmount: prop.trade.pnlAmount !== undefined ? {
|
862
|
+
set: prop.trade.pnlAmount
|
863
|
+
} : undefined,
|
864
|
+
pnlPercent: prop.trade.pnlPercent !== undefined ? {
|
865
|
+
set: prop.trade.pnlPercent
|
866
|
+
} : undefined,
|
867
|
+
durationMinutes: prop.trade.durationMinutes !== undefined ? {
|
868
|
+
set: prop.trade.durationMinutes
|
869
|
+
} : undefined,
|
870
|
+
marketPhase: prop.trade.marketPhase !== undefined ? {
|
871
|
+
set: prop.trade.marketPhase
|
872
|
+
} : undefined,
|
873
|
+
marketVolatility: prop.trade.marketVolatility !== undefined ? {
|
874
|
+
set: prop.trade.marketVolatility
|
875
|
+
} : undefined,
|
876
|
+
thresholdsJson: prop.trade.thresholdsJson !== undefined ? {
|
877
|
+
set: prop.trade.thresholdsJson
|
878
|
+
} : undefined,
|
879
|
+
},
|
880
|
+
create: {
|
881
|
+
alpacaAccountId: prop.trade.alpacaAccountId !== undefined ? prop.trade.alpacaAccountId : undefined,
|
882
|
+
signal: prop.trade.signal !== undefined ? prop.trade.signal : undefined,
|
883
|
+
strategy: prop.trade.strategy !== undefined ? prop.trade.strategy : undefined,
|
884
|
+
analysis: prop.trade.analysis !== undefined ? prop.trade.analysis : undefined,
|
885
|
+
summary: prop.trade.summary !== undefined ? prop.trade.summary : undefined,
|
886
|
+
confidence: prop.trade.confidence !== undefined ? prop.trade.confidence : undefined,
|
887
|
+
timestamp: prop.trade.timestamp !== undefined ? prop.trade.timestamp : undefined,
|
888
|
+
status: prop.trade.status !== undefined ? prop.trade.status : undefined,
|
889
|
+
symbol: prop.trade.symbol !== undefined ? prop.trade.symbol : undefined,
|
890
|
+
entryPrice: prop.trade.entryPrice !== undefined ? prop.trade.entryPrice : undefined,
|
891
|
+
exitPrice: prop.trade.exitPrice !== undefined ? prop.trade.exitPrice : undefined,
|
892
|
+
entryQty: prop.trade.entryQty !== undefined ? prop.trade.entryQty : undefined,
|
893
|
+
exitQty: prop.trade.exitQty !== undefined ? prop.trade.exitQty : undefined,
|
894
|
+
entryValue: prop.trade.entryValue !== undefined ? prop.trade.entryValue : undefined,
|
895
|
+
exitValue: prop.trade.exitValue !== undefined ? prop.trade.exitValue : undefined,
|
896
|
+
entryTime: prop.trade.entryTime !== undefined ? prop.trade.entryTime : undefined,
|
897
|
+
exitTime: prop.trade.exitTime !== undefined ? prop.trade.exitTime : undefined,
|
898
|
+
pnlAmount: prop.trade.pnlAmount !== undefined ? prop.trade.pnlAmount : undefined,
|
899
|
+
pnlPercent: prop.trade.pnlPercent !== undefined ? prop.trade.pnlPercent : undefined,
|
900
|
+
durationMinutes: prop.trade.durationMinutes !== undefined ? prop.trade.durationMinutes : undefined,
|
901
|
+
marketPhase: prop.trade.marketPhase !== undefined ? prop.trade.marketPhase : undefined,
|
902
|
+
marketVolatility: prop.trade.marketVolatility !== undefined ? prop.trade.marketVolatility : undefined,
|
903
|
+
thresholdsJson: prop.trade.thresholdsJson !== undefined ? prop.trade.thresholdsJson : undefined,
|
904
|
+
},
|
905
|
+
}
|
906
|
+
} : undefined,
|
907
|
+
},
|
908
|
+
}));
|
909
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
910
|
+
const response = await client.mutate({
|
911
|
+
mutation: UPDATE_MANY_ACTION,
|
912
|
+
variables: filteredVariables,
|
913
|
+
// Don't cache mutations, but ensure we're using the freshest context
|
914
|
+
fetchPolicy: 'no-cache'
|
915
|
+
});
|
916
|
+
if (response.errors && response.errors.length > 0)
|
917
|
+
throw new Error(response.errors[0].message);
|
918
|
+
if (response && response.data && response.data.updateManyAction) {
|
919
|
+
return response.data.updateManyAction;
|
920
|
+
}
|
921
|
+
else {
|
922
|
+
return null;
|
923
|
+
}
|
623
924
|
}
|
624
|
-
|
625
|
-
|
925
|
+
catch (error) {
|
926
|
+
lastError = error;
|
927
|
+
// Check if this is a database connection error that we should retry
|
928
|
+
const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
|
929
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
|
930
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
|
931
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
932
|
+
(error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
|
933
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
934
|
+
retryCount++;
|
935
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
936
|
+
console.warn("Database connection error, retrying...");
|
937
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
938
|
+
continue;
|
939
|
+
}
|
940
|
+
// Log the error and rethrow
|
941
|
+
console.error("Database error occurred:", error);
|
942
|
+
throw error;
|
626
943
|
}
|
627
944
|
}
|
628
|
-
|
629
|
-
|
630
|
-
throw error;
|
631
|
-
}
|
945
|
+
// If we exhausted retries, throw the last error
|
946
|
+
throw lastError;
|
632
947
|
},
|
633
948
|
/**
|
634
949
|
* Delete a single Action record.
|
635
|
-
*
|
950
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
951
|
+
* @param props - Properties to identify the record to delete.
|
636
952
|
* @param globalClient - Apollo Client instance.
|
637
953
|
* @returns The deleted Action or null.
|
638
954
|
*/
|
639
955
|
async delete(props, globalClient) {
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
956
|
+
var _a, _b, _c, _d, _e;
|
957
|
+
// Maximum number of retries for database connection issues
|
958
|
+
const MAX_RETRIES = 3;
|
959
|
+
let retryCount = 0;
|
960
|
+
let lastError = null;
|
961
|
+
// Retry loop to handle potential database connection issues
|
962
|
+
while (retryCount < MAX_RETRIES) {
|
963
|
+
try {
|
964
|
+
const [modules, client] = await Promise.all([
|
965
|
+
(0, client_1.getApolloModules)(),
|
966
|
+
globalClient
|
967
|
+
? Promise.resolve(globalClient)
|
968
|
+
: client_1.client
|
969
|
+
]);
|
970
|
+
const { gql, ApolloError } = modules;
|
971
|
+
const DELETE_ONE_ACTION = gql `
|
972
|
+
mutation deleteOneAction($where: ActionWhereUniqueInput!) {
|
973
|
+
deleteOneAction(where: $where) {
|
974
|
+
id
|
656
975
|
}
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
976
|
+
}`;
|
977
|
+
const variables = {
|
978
|
+
where: {
|
979
|
+
id: props.id ? props.id : undefined,
|
980
|
+
}
|
981
|
+
};
|
982
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
983
|
+
const response = await client.mutate({
|
984
|
+
mutation: DELETE_ONE_ACTION,
|
985
|
+
variables: filteredVariables,
|
986
|
+
// Don't cache mutations, but ensure we're using the freshest context
|
987
|
+
fetchPolicy: 'no-cache'
|
988
|
+
});
|
989
|
+
if (response.errors && response.errors.length > 0)
|
990
|
+
throw new Error(response.errors[0].message);
|
991
|
+
if (response && response.data && response.data.deleteOneAction) {
|
992
|
+
return response.data.deleteOneAction;
|
993
|
+
}
|
994
|
+
else {
|
995
|
+
return null;
|
996
|
+
}
|
665
997
|
}
|
666
|
-
|
667
|
-
|
998
|
+
catch (error) {
|
999
|
+
lastError = error;
|
1000
|
+
// Check if this is a database connection error that we should retry
|
1001
|
+
const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
|
1002
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
|
1003
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
|
1004
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
1005
|
+
(error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
|
1006
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
1007
|
+
retryCount++;
|
1008
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
1009
|
+
console.warn("Database connection error, retrying...");
|
1010
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
1011
|
+
continue;
|
1012
|
+
}
|
1013
|
+
// Log the error and rethrow
|
1014
|
+
console.error("Database error occurred:", error);
|
1015
|
+
throw error;
|
668
1016
|
}
|
669
1017
|
}
|
670
|
-
|
671
|
-
|
672
|
-
throw error;
|
673
|
-
}
|
1018
|
+
// If we exhausted retries, throw the last error
|
1019
|
+
throw lastError;
|
674
1020
|
},
|
675
1021
|
/**
|
676
1022
|
* Retrieve a single Action record by ID.
|
677
|
-
*
|
1023
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
1024
|
+
* @param props - Properties to identify the record.
|
678
1025
|
* @param globalClient - Apollo Client instance.
|
1026
|
+
* @param whereInput - Optional custom where input.
|
679
1027
|
* @returns The retrieved Action or null.
|
680
1028
|
*/
|
681
1029
|
async get(props, globalClient, whereInput) {
|
682
|
-
var _a, _b;
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
equals: props.tradeId
|
702
|
-
} : undefined,
|
703
|
-
},
|
704
|
-
};
|
705
|
-
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
706
|
-
try {
|
707
|
-
const response = await client.query({ query: GET_ACTION, variables: filteredVariables });
|
708
|
-
if (response.errors && response.errors.length > 0)
|
709
|
-
throw new Error(response.errors[0].message);
|
710
|
-
return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.getAction) !== null && _b !== void 0 ? _b : null;
|
711
|
-
}
|
712
|
-
catch (error) {
|
713
|
-
if (error instanceof ApolloError && error.message === 'No Action found') {
|
714
|
-
return null;
|
1030
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
1031
|
+
// Maximum number of retries for database connection issues
|
1032
|
+
const MAX_RETRIES = 3;
|
1033
|
+
let retryCount = 0;
|
1034
|
+
let lastError = null;
|
1035
|
+
// Retry loop to handle potential database connection issues
|
1036
|
+
while (retryCount < MAX_RETRIES) {
|
1037
|
+
try {
|
1038
|
+
const [modules, client] = await Promise.all([
|
1039
|
+
(0, client_1.getApolloModules)(),
|
1040
|
+
globalClient
|
1041
|
+
? Promise.resolve(globalClient)
|
1042
|
+
: client_1.client
|
1043
|
+
]);
|
1044
|
+
const { gql, ApolloError } = modules;
|
1045
|
+
const GET_ACTION = gql `
|
1046
|
+
query getAction($where: ActionWhereUniqueInput!) {
|
1047
|
+
getAction(where: $where) {
|
1048
|
+
${selectionSet}
|
715
1049
|
}
|
716
|
-
|
717
|
-
|
1050
|
+
}`;
|
1051
|
+
const variables = {
|
1052
|
+
where: whereInput ? whereInput : {
|
1053
|
+
id: props.id !== undefined ? props.id : undefined,
|
1054
|
+
alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
|
1055
|
+
tradeId: props.tradeId !== undefined ? {
|
1056
|
+
equals: props.tradeId
|
1057
|
+
} : undefined,
|
1058
|
+
},
|
1059
|
+
};
|
1060
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
1061
|
+
const response = await client.query({
|
1062
|
+
query: GET_ACTION,
|
1063
|
+
variables: filteredVariables,
|
1064
|
+
fetchPolicy: 'network-only', // Force network request to avoid stale cache
|
1065
|
+
});
|
1066
|
+
if (response.errors && response.errors.length > 0)
|
1067
|
+
throw new Error(response.errors[0].message);
|
1068
|
+
return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.getAction) !== null && _b !== void 0 ? _b : null;
|
1069
|
+
}
|
1070
|
+
catch (error) {
|
1071
|
+
lastError = error;
|
1072
|
+
// Check if this is a "No record found" error - this is an expected condition, not a failure
|
1073
|
+
if (error.message === 'No Action found') {
|
1074
|
+
return null;
|
1075
|
+
}
|
1076
|
+
// Check if this is a database connection error that we should retry
|
1077
|
+
const isConnectionError = ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Server has closed the connection')) ||
|
1078
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Cannot reach database server')) ||
|
1079
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('Connection timed out')) ||
|
1080
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
1081
|
+
(error.networkError && ((_g = error.networkError.message) === null || _g === void 0 ? void 0 : _g.includes('Failed to fetch')));
|
1082
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
1083
|
+
retryCount++;
|
1084
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
1085
|
+
console.warn("Database connection error, retrying...");
|
1086
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
1087
|
+
continue;
|
1088
|
+
}
|
1089
|
+
// Log the error and rethrow
|
1090
|
+
console.error("Database error occurred:", error);
|
718
1091
|
throw error;
|
719
1092
|
}
|
720
1093
|
}
|
1094
|
+
// If we exhausted retries, throw the last error
|
1095
|
+
throw lastError;
|
721
1096
|
},
|
722
1097
|
/**
|
723
1098
|
* Retrieve all Actions records.
|
1099
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
724
1100
|
* @param globalClient - Apollo Client instance.
|
725
1101
|
* @returns An array of Action records or null.
|
726
1102
|
*/
|
727
1103
|
async getAll(globalClient) {
|
728
|
-
var _a, _b;
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
1104
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
1105
|
+
// Maximum number of retries for database connection issues
|
1106
|
+
const MAX_RETRIES = 3;
|
1107
|
+
let retryCount = 0;
|
1108
|
+
let lastError = null;
|
1109
|
+
// Retry loop to handle potential database connection issues
|
1110
|
+
while (retryCount < MAX_RETRIES) {
|
1111
|
+
try {
|
1112
|
+
const [modules, client] = await Promise.all([
|
1113
|
+
(0, client_1.getApolloModules)(),
|
1114
|
+
globalClient
|
1115
|
+
? Promise.resolve(globalClient)
|
1116
|
+
: client_1.client
|
1117
|
+
]);
|
1118
|
+
const { gql, ApolloError } = modules;
|
1119
|
+
const GET_ALL_ACTION = gql `
|
1120
|
+
query getAllAction {
|
1121
|
+
actions {
|
1122
|
+
${selectionSet}
|
1123
|
+
}
|
1124
|
+
}`;
|
1125
|
+
const response = await client.query({
|
1126
|
+
query: GET_ALL_ACTION,
|
1127
|
+
fetchPolicy: 'network-only', // Force network request to avoid stale cache
|
1128
|
+
});
|
1129
|
+
if (response.errors && response.errors.length > 0)
|
1130
|
+
throw new Error(response.errors[0].message);
|
1131
|
+
return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.actions) !== null && _b !== void 0 ? _b : null;
|
751
1132
|
}
|
752
|
-
|
753
|
-
|
1133
|
+
catch (error) {
|
1134
|
+
lastError = error;
|
1135
|
+
// Check if this is a "No record found" error - this is an expected condition, not a failure
|
1136
|
+
if (error.message === 'No Action found') {
|
1137
|
+
return null;
|
1138
|
+
}
|
1139
|
+
// Check if this is a database connection error that we should retry
|
1140
|
+
const isConnectionError = ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Server has closed the connection')) ||
|
1141
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Cannot reach database server')) ||
|
1142
|
+
((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('Connection timed out')) ||
|
1143
|
+
((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
1144
|
+
(error.networkError && ((_g = error.networkError.message) === null || _g === void 0 ? void 0 : _g.includes('Failed to fetch')));
|
1145
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
1146
|
+
retryCount++;
|
1147
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
1148
|
+
console.warn("Database connection error, retrying...");
|
1149
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
1150
|
+
continue;
|
1151
|
+
}
|
1152
|
+
// Log the error and rethrow
|
1153
|
+
console.error("Database error occurred:", error);
|
754
1154
|
throw error;
|
755
1155
|
}
|
756
1156
|
}
|
1157
|
+
// If we exhausted retries, throw the last error
|
1158
|
+
throw lastError;
|
757
1159
|
},
|
758
1160
|
/**
|
759
1161
|
* Find multiple Action records based on conditions.
|
1162
|
+
* Enhanced with connection resilience against Prisma connection errors.
|
760
1163
|
* @param props - Conditions to find records.
|
761
1164
|
* @param globalClient - Apollo Client instance.
|
1165
|
+
* @param whereInput - Optional custom where input.
|
762
1166
|
* @returns An array of found Action records or null.
|
763
1167
|
*/
|
764
1168
|
async findMany(props, globalClient, whereInput) {
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
equals: props.tradeId
|
785
|
-
} : undefined,
|
786
|
-
},
|
787
|
-
};
|
788
|
-
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
789
|
-
try {
|
790
|
-
const response = await client.query({ query: FIND_MANY_ACTION, variables: filteredVariables });
|
791
|
-
if (response.errors && response.errors.length > 0)
|
792
|
-
throw new Error(response.errors[0].message);
|
793
|
-
if (response && response.data && response.data.actions) {
|
794
|
-
return response.data.actions;
|
795
|
-
}
|
796
|
-
else {
|
797
|
-
return [];
|
1169
|
+
var _a, _b, _c, _d, _e;
|
1170
|
+
// Maximum number of retries for database connection issues
|
1171
|
+
const MAX_RETRIES = 3;
|
1172
|
+
let retryCount = 0;
|
1173
|
+
let lastError = null;
|
1174
|
+
// Retry loop to handle potential database connection issues
|
1175
|
+
while (retryCount < MAX_RETRIES) {
|
1176
|
+
try {
|
1177
|
+
const [modules, client] = await Promise.all([
|
1178
|
+
(0, client_1.getApolloModules)(),
|
1179
|
+
globalClient
|
1180
|
+
? Promise.resolve(globalClient)
|
1181
|
+
: client_1.client
|
1182
|
+
]);
|
1183
|
+
const { gql, ApolloError } = modules;
|
1184
|
+
const FIND_MANY_ACTION = gql `
|
1185
|
+
query findManyAction($where: ActionWhereInput!) {
|
1186
|
+
actions(where: $where) {
|
1187
|
+
${selectionSet}
|
798
1188
|
}
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
1189
|
+
}`;
|
1190
|
+
const variables = {
|
1191
|
+
where: whereInput ? whereInput : {
|
1192
|
+
id: props.id !== undefined ? {
|
1193
|
+
equals: props.id
|
1194
|
+
} : undefined,
|
1195
|
+
tradeId: props.tradeId !== undefined ? {
|
1196
|
+
equals: props.tradeId
|
1197
|
+
} : undefined,
|
1198
|
+
},
|
1199
|
+
};
|
1200
|
+
const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
|
1201
|
+
const response = await client.query({
|
1202
|
+
query: FIND_MANY_ACTION,
|
1203
|
+
variables: filteredVariables,
|
1204
|
+
fetchPolicy: 'network-only', // Force network request to avoid stale cache
|
1205
|
+
});
|
1206
|
+
if (response.errors && response.errors.length > 0)
|
1207
|
+
throw new Error(response.errors[0].message);
|
1208
|
+
if (response && response.data && response.data.actions) {
|
1209
|
+
return response.data.actions;
|
1210
|
+
}
|
1211
|
+
else {
|
1212
|
+
return [];
|
1213
|
+
}
|
803
1214
|
}
|
804
|
-
|
805
|
-
|
1215
|
+
catch (error) {
|
1216
|
+
lastError = error;
|
1217
|
+
// Check if this is a "No record found" error - this is an expected condition, not a failure
|
1218
|
+
if (error.message === 'No Action found') {
|
1219
|
+
return null;
|
1220
|
+
}
|
1221
|
+
// Check if this is a database connection error that we should retry
|
1222
|
+
const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
|
1223
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
|
1224
|
+
((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
|
1225
|
+
((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
|
1226
|
+
(error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
|
1227
|
+
if (isConnectionError && retryCount < MAX_RETRIES - 1) {
|
1228
|
+
retryCount++;
|
1229
|
+
const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
|
1230
|
+
console.warn("Database connection error, retrying...");
|
1231
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
1232
|
+
continue;
|
1233
|
+
}
|
1234
|
+
// Log the error and rethrow
|
1235
|
+
console.error("Database error occurred:", error);
|
806
1236
|
throw error;
|
807
1237
|
}
|
808
1238
|
}
|
1239
|
+
// If we exhausted retries, throw the last error
|
1240
|
+
throw lastError;
|
809
1241
|
}
|
810
1242
|
};
|
811
1243
|
//# sourceMappingURL=Action.js.map
|