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.
Files changed (352) hide show
  1. package/Account.cjs +2543 -2265
  2. package/Account.d.ts +19 -2
  3. package/Action.cjs +1115 -683
  4. package/Action.d.ts +19 -2
  5. package/Alert.cjs +2626 -2348
  6. package/Alert.d.ts +19 -2
  7. package/Allocation.cjs +2578 -2300
  8. package/Allocation.d.ts +19 -2
  9. package/AlpacaAccount.cjs +2383 -2105
  10. package/AlpacaAccount.d.ts +19 -2
  11. package/Asset.cjs +1813 -1535
  12. package/Asset.d.ts +19 -2
  13. package/Authenticator.cjs +2568 -2290
  14. package/Authenticator.d.ts +19 -2
  15. package/Customer.cjs +2495 -2217
  16. package/Customer.d.ts +19 -2
  17. package/EconomicEvent.cjs +645 -367
  18. package/EconomicEvent.d.ts +19 -2
  19. package/MarketSentiment.cjs +618 -340
  20. package/MarketSentiment.d.ts +19 -2
  21. package/NewsArticle.cjs +1933 -1655
  22. package/NewsArticle.d.ts +19 -2
  23. package/NewsArticleAssetSentiment.cjs +1842 -1564
  24. package/NewsArticleAssetSentiment.d.ts +19 -2
  25. package/ScheduledOptionOrder.cjs +594 -316
  26. package/ScheduledOptionOrder.d.ts +19 -2
  27. package/Session.cjs +2570 -2292
  28. package/Session.d.ts +19 -2
  29. package/Trade.cjs +1087 -666
  30. package/Trade.d.ts +19 -2
  31. package/User.cjs +2288 -2010
  32. package/User.d.ts +19 -2
  33. package/VerificationToken.cjs +606 -328
  34. package/VerificationToken.d.ts +19 -2
  35. package/esm/Account.d.ts +19 -2
  36. package/esm/Account.d.ts.map +1 -1
  37. package/esm/Account.js.map +1 -1
  38. package/esm/Account.mjs +2534 -2263
  39. package/esm/Action.d.ts +19 -2
  40. package/esm/Action.d.ts.map +1 -1
  41. package/esm/Action.js.map +1 -1
  42. package/esm/Action.mjs +1106 -681
  43. package/esm/Alert.d.ts +19 -2
  44. package/esm/Alert.d.ts.map +1 -1
  45. package/esm/Alert.js.map +1 -1
  46. package/esm/Alert.mjs +2617 -2346
  47. package/esm/Allocation.d.ts +19 -2
  48. package/esm/Allocation.d.ts.map +1 -1
  49. package/esm/Allocation.js.map +1 -1
  50. package/esm/Allocation.mjs +2569 -2298
  51. package/esm/AlpacaAccount.d.ts +19 -2
  52. package/esm/AlpacaAccount.d.ts.map +1 -1
  53. package/esm/AlpacaAccount.js.map +1 -1
  54. package/esm/AlpacaAccount.mjs +2374 -2103
  55. package/esm/Asset.d.ts +19 -2
  56. package/esm/Asset.d.ts.map +1 -1
  57. package/esm/Asset.js.map +1 -1
  58. package/esm/Asset.mjs +1804 -1533
  59. package/esm/Authenticator.d.ts +19 -2
  60. package/esm/Authenticator.d.ts.map +1 -1
  61. package/esm/Authenticator.js.map +1 -1
  62. package/esm/Authenticator.mjs +2559 -2288
  63. package/esm/Customer.d.ts +19 -2
  64. package/esm/Customer.d.ts.map +1 -1
  65. package/esm/Customer.js.map +1 -1
  66. package/esm/Customer.mjs +2486 -2215
  67. package/esm/EconomicEvent.d.ts +19 -2
  68. package/esm/EconomicEvent.d.ts.map +1 -1
  69. package/esm/EconomicEvent.js.map +1 -1
  70. package/esm/EconomicEvent.mjs +636 -365
  71. package/esm/MarketSentiment.d.ts +19 -2
  72. package/esm/MarketSentiment.d.ts.map +1 -1
  73. package/esm/MarketSentiment.js.map +1 -1
  74. package/esm/MarketSentiment.mjs +609 -338
  75. package/esm/NewsArticle.d.ts +19 -2
  76. package/esm/NewsArticle.d.ts.map +1 -1
  77. package/esm/NewsArticle.js.map +1 -1
  78. package/esm/NewsArticle.mjs +1924 -1653
  79. package/esm/NewsArticleAssetSentiment.d.ts +19 -2
  80. package/esm/NewsArticleAssetSentiment.d.ts.map +1 -1
  81. package/esm/NewsArticleAssetSentiment.js.map +1 -1
  82. package/esm/NewsArticleAssetSentiment.mjs +1833 -1562
  83. package/esm/ScheduledOptionOrder.d.ts +19 -2
  84. package/esm/ScheduledOptionOrder.d.ts.map +1 -1
  85. package/esm/ScheduledOptionOrder.js.map +1 -1
  86. package/esm/ScheduledOptionOrder.mjs +585 -314
  87. package/esm/Session.d.ts +19 -2
  88. package/esm/Session.d.ts.map +1 -1
  89. package/esm/Session.js.map +1 -1
  90. package/esm/Session.mjs +2561 -2290
  91. package/esm/Trade.d.ts +19 -2
  92. package/esm/Trade.d.ts.map +1 -1
  93. package/esm/Trade.js.map +1 -1
  94. package/esm/Trade.mjs +1078 -664
  95. package/esm/User.d.ts +19 -2
  96. package/esm/User.d.ts.map +1 -1
  97. package/esm/User.js.map +1 -1
  98. package/esm/User.mjs +2279 -2008
  99. package/esm/VerificationToken.d.ts +19 -2
  100. package/esm/VerificationToken.d.ts.map +1 -1
  101. package/esm/VerificationToken.js.map +1 -1
  102. package/esm/VerificationToken.mjs +597 -326
  103. package/esm/generated/selectionSets/Trade.d.ts +1 -1
  104. package/esm/generated/selectionSets/Trade.d.ts.map +1 -1
  105. package/esm/generated/selectionSets/Trade.js.map +1 -1
  106. package/esm/generated/selectionSets/Trade.mjs +14 -3
  107. package/esm/generated/typeStrings/Trade.d.ts +1 -1
  108. package/esm/generated/typeStrings/Trade.d.ts.map +1 -1
  109. package/esm/generated/typeStrings/Trade.js.map +1 -1
  110. package/esm/generated/typeStrings/Trade.mjs +0 -6
  111. package/esm/generated/typeStrings/index.d.ts +1 -1
  112. package/esm/generated/typegraphql-prisma/enhance.js.map +1 -1
  113. package/esm/generated/typegraphql-prisma/enhance.mjs +24 -24
  114. package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts +15 -4
  115. package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts.map +1 -1
  116. package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.js.map +1 -1
  117. package/esm/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.mjs +14 -3
  118. package/esm/generated/typegraphql-prisma/models/Trade.d.ts +56 -12
  119. package/esm/generated/typegraphql-prisma/models/Trade.d.ts.map +1 -1
  120. package/esm/generated/typegraphql-prisma/models/Trade.js.map +1 -1
  121. package/esm/generated/typegraphql-prisma/models/Trade.mjs +154 -33
  122. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts +1 -1
  123. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts.map +1 -1
  124. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.js.map +1 -1
  125. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts +1 -1
  126. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts.map +1 -1
  127. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.js.map +1 -1
  128. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts +1 -1
  129. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts.map +1 -1
  130. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.js.map +1 -1
  131. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts +1 -1
  132. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts.map +1 -1
  133. package/esm/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.js.map +1 -1
  134. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts +9 -3
  135. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts.map +1 -1
  136. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.js.map +1 -1
  137. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.mjs +49 -7
  138. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts +14 -3
  139. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts.map +1 -1
  140. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.js.map +1 -1
  141. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.mjs +93 -16
  142. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts +14 -3
  143. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts.map +1 -1
  144. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.js.map +1 -1
  145. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.mjs +98 -21
  146. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts +14 -3
  147. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts.map +1 -1
  148. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.js.map +1 -1
  149. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.mjs +98 -21
  150. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts +14 -3
  151. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts.map +1 -1
  152. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.js.map +1 -1
  153. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.mjs +98 -21
  154. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts +14 -3
  155. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts.map +1 -1
  156. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.js.map +1 -1
  157. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.mjs +93 -16
  158. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts +14 -3
  159. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts.map +1 -1
  160. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.js.map +1 -1
  161. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.mjs +93 -16
  162. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts +14 -3
  163. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts.map +1 -1
  164. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.js.map +1 -1
  165. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.mjs +97 -20
  166. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts +14 -3
  167. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts.map +1 -1
  168. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.js.map +1 -1
  169. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.mjs +97 -20
  170. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts +16 -3
  171. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts.map +1 -1
  172. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.js.map +1 -1
  173. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.mjs +100 -21
  174. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts +9 -3
  175. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts.map +1 -1
  176. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.js.map +1 -1
  177. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.mjs +49 -7
  178. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts +16 -3
  179. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts.map +1 -1
  180. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.js.map +1 -1
  181. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.mjs +100 -21
  182. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts +16 -3
  183. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts.map +1 -1
  184. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.js.map +1 -1
  185. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.mjs +100 -21
  186. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts +16 -3
  187. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts.map +1 -1
  188. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.js.map +1 -1
  189. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.mjs +100 -21
  190. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts +16 -3
  191. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts.map +1 -1
  192. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.js.map +1 -1
  193. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.mjs +100 -21
  194. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts +16 -3
  195. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts.map +1 -1
  196. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.js.map +1 -1
  197. package/esm/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.mjs +100 -21
  198. package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts +14 -3
  199. package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts.map +1 -1
  200. package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.js.map +1 -1
  201. package/esm/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.mjs +98 -21
  202. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts +9 -3
  203. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts.map +1 -1
  204. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.js.map +1 -1
  205. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.mjs +49 -7
  206. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts +14 -3
  207. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts.map +1 -1
  208. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.js.map +1 -1
  209. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.mjs +93 -16
  210. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts +14 -3
  211. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts.map +1 -1
  212. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.js.map +1 -1
  213. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.mjs +98 -21
  214. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts +14 -3
  215. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts.map +1 -1
  216. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.js.map +1 -1
  217. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.mjs +98 -21
  218. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts +14 -3
  219. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts.map +1 -1
  220. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.js.map +1 -1
  221. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.mjs +98 -21
  222. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts +9 -3
  223. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts.map +1 -1
  224. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.js.map +1 -1
  225. package/esm/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.mjs +49 -7
  226. package/esm/prismaClient.d.ts +4 -5
  227. package/esm/prismaClient.d.ts.map +1 -1
  228. package/esm/prismaClient.js.map +1 -1
  229. package/esm/prismaClient.mjs +13 -11
  230. package/generated/typeStrings/Trade.cjs +0 -6
  231. package/generated/typeStrings/Trade.d.ts +1 -1
  232. package/generated/typeStrings/Trade.d.ts.map +1 -1
  233. package/generated/typeStrings/Trade.js.map +1 -1
  234. package/generated/typeStrings/index.d.ts +1 -1
  235. package/generated/typegraphql-prisma/enhance.cjs +24 -24
  236. package/generated/typegraphql-prisma/enhance.js.map +1 -1
  237. package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.cjs +14 -3
  238. package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts +15 -4
  239. package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.d.ts.map +1 -1
  240. package/generated/typegraphql-prisma/enums/TradeScalarFieldEnum.js.map +1 -1
  241. package/generated/typegraphql-prisma/models/Trade.cjs +98 -21
  242. package/generated/typegraphql-prisma/models/Trade.d.ts +56 -12
  243. package/generated/typegraphql-prisma/models/Trade.d.ts.map +1 -1
  244. package/generated/typegraphql-prisma/models/Trade.js.map +1 -1
  245. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts +1 -1
  246. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.d.ts.map +1 -1
  247. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeArgs.js.map +1 -1
  248. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts +1 -1
  249. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.d.ts.map +1 -1
  250. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindFirstTradeOrThrowArgs.js.map +1 -1
  251. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts +1 -1
  252. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.d.ts.map +1 -1
  253. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/FindManyTradeArgs.js.map +1 -1
  254. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts +1 -1
  255. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.d.ts.map +1 -1
  256. package/generated/typegraphql-prisma/resolvers/crud/Trade/args/GroupByTradeArgs.js.map +1 -1
  257. package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.cjs +40 -4
  258. package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts +9 -3
  259. package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.d.ts.map +1 -1
  260. package/generated/typegraphql-prisma/resolvers/inputs/TradeAvgOrderByAggregateInput.js.map +1 -1
  261. package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.cjs +79 -13
  262. package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts +14 -3
  263. package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.d.ts.map +1 -1
  264. package/generated/typegraphql-prisma/resolvers/inputs/TradeCountOrderByAggregateInput.js.map +1 -1
  265. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.cjs +84 -18
  266. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts +14 -3
  267. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.d.ts.map +1 -1
  268. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateInput.js.map +1 -1
  269. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.cjs +84 -18
  270. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts +14 -3
  271. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.d.ts.map +1 -1
  272. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateManyInput.js.map +1 -1
  273. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.cjs +84 -18
  274. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts +14 -3
  275. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.d.ts.map +1 -1
  276. package/generated/typegraphql-prisma/resolvers/inputs/TradeCreateWithoutActionsInput.js.map +1 -1
  277. package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.cjs +79 -13
  278. package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts +14 -3
  279. package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.d.ts.map +1 -1
  280. package/generated/typegraphql-prisma/resolvers/inputs/TradeMaxOrderByAggregateInput.js.map +1 -1
  281. package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.cjs +79 -13
  282. package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts +14 -3
  283. package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.d.ts.map +1 -1
  284. package/generated/typegraphql-prisma/resolvers/inputs/TradeMinOrderByAggregateInput.js.map +1 -1
  285. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.cjs +83 -17
  286. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts +14 -3
  287. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.d.ts.map +1 -1
  288. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithAggregationInput.js.map +1 -1
  289. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.cjs +83 -17
  290. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts +14 -3
  291. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.d.ts.map +1 -1
  292. package/generated/typegraphql-prisma/resolvers/inputs/TradeOrderByWithRelationInput.js.map +1 -1
  293. package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.cjs +86 -18
  294. package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts +16 -3
  295. package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.d.ts.map +1 -1
  296. package/generated/typegraphql-prisma/resolvers/inputs/TradeScalarWhereWithAggregatesInput.js.map +1 -1
  297. package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.cjs +40 -4
  298. package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts +9 -3
  299. package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.d.ts.map +1 -1
  300. package/generated/typegraphql-prisma/resolvers/inputs/TradeSumOrderByAggregateInput.js.map +1 -1
  301. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.cjs +86 -18
  302. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts +16 -3
  303. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.d.ts.map +1 -1
  304. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateInput.js.map +1 -1
  305. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.cjs +86 -18
  306. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts +16 -3
  307. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.d.ts.map +1 -1
  308. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateManyMutationInput.js.map +1 -1
  309. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.cjs +86 -18
  310. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts +16 -3
  311. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.d.ts.map +1 -1
  312. package/generated/typegraphql-prisma/resolvers/inputs/TradeUpdateWithoutActionsInput.js.map +1 -1
  313. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.cjs +86 -18
  314. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts +16 -3
  315. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.d.ts.map +1 -1
  316. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereInput.js.map +1 -1
  317. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.cjs +86 -18
  318. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts +16 -3
  319. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.d.ts.map +1 -1
  320. package/generated/typegraphql-prisma/resolvers/inputs/TradeWhereUniqueInput.js.map +1 -1
  321. package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.cjs +84 -18
  322. package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts +14 -3
  323. package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.d.ts.map +1 -1
  324. package/generated/typegraphql-prisma/resolvers/outputs/CreateManyAndReturnTrade.js.map +1 -1
  325. package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.cjs +40 -4
  326. package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts +9 -3
  327. package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.d.ts.map +1 -1
  328. package/generated/typegraphql-prisma/resolvers/outputs/TradeAvgAggregate.js.map +1 -1
  329. package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.cjs +79 -13
  330. package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts +14 -3
  331. package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.d.ts.map +1 -1
  332. package/generated/typegraphql-prisma/resolvers/outputs/TradeCountAggregate.js.map +1 -1
  333. package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.cjs +84 -18
  334. package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts +14 -3
  335. package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.d.ts.map +1 -1
  336. package/generated/typegraphql-prisma/resolvers/outputs/TradeGroupBy.js.map +1 -1
  337. package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.cjs +84 -18
  338. package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts +14 -3
  339. package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.d.ts.map +1 -1
  340. package/generated/typegraphql-prisma/resolvers/outputs/TradeMaxAggregate.js.map +1 -1
  341. package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.cjs +84 -18
  342. package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts +14 -3
  343. package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.d.ts.map +1 -1
  344. package/generated/typegraphql-prisma/resolvers/outputs/TradeMinAggregate.js.map +1 -1
  345. package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.cjs +40 -4
  346. package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts +9 -3
  347. package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.d.ts.map +1 -1
  348. package/generated/typegraphql-prisma/resolvers/outputs/TradeSumAggregate.js.map +1 -1
  349. package/package.json +1 -1
  350. package/prismaClient.cjs +13 -11
  351. package/prismaClient.d.ts +4 -5
  352. 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
- const [modules, client] = await Promise.all([
32
- (0, client_1.getApolloModules)(),
33
- globalClient
34
- ? Promise.resolve(globalClient)
35
- : client_1.client
36
- ]);
37
- const { gql, ApolloError } = modules;
38
- const CREATE_ONE_ACTION = gql `
39
- mutation createOneAction($data: ActionCreateInput!) {
40
- createOneAction(data: $data) {
41
- ${selectionSet}
42
- }
43
- }
44
- `;
45
- const variables = {
46
- data: {
47
- sequence: props.sequence !== undefined ? props.sequence : undefined,
48
- type: props.type !== undefined ? props.type : undefined,
49
- primary: props.primary !== undefined ? props.primary : undefined,
50
- note: props.note !== undefined ? props.note : undefined,
51
- status: props.status !== undefined ? props.status : undefined,
52
- alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
53
- trade: props.trade ?
54
- typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && Object.keys(props.trade)[0] === 'id'
55
- ? { connect: {
56
- id: props.trade.id
57
- }
58
- }
59
- : { connectOrCreate: {
60
- where: {
61
- id: props.trade.id !== undefined ? props.trade.id : undefined,
62
- alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
63
- equals: props.trade.alpacaAccountId
64
- } : undefined,
65
- symbol: props.trade.symbol !== undefined ? {
66
- equals: props.trade.symbol
67
- } : undefined,
68
- },
69
- create: {
70
- alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
71
- qty: props.trade.qty !== undefined ? props.trade.qty : undefined,
72
- price: props.trade.price !== undefined ? props.trade.price : undefined,
73
- total: props.trade.total !== undefined ? props.trade.total : undefined,
74
- signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
75
- strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
76
- analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
77
- summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
78
- confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
79
- timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
80
- status: props.trade.status !== undefined ? props.trade.status : undefined,
81
- symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
82
- },
83
- }
84
- } : undefined,
85
- },
86
- };
87
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
88
- try {
89
- const response = await client.mutate({ mutation: CREATE_ONE_ACTION, variables: filteredVariables });
90
- if (response.errors && response.errors.length > 0)
91
- throw new Error(response.errors[0].message);
92
- if (response && response.data && response.data.createOneAction) {
93
- return response.data.createOneAction;
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
- else {
96
- return null;
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
- catch (error) {
100
- console.error('Error in createOneAction:', error);
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
- const [modules, client] = await Promise.all([
112
- (0, client_1.getApolloModules)(),
113
- globalClient
114
- ? Promise.resolve(globalClient)
115
- : client_1.client
116
- ]);
117
- const { gql, ApolloError } = modules;
118
- const CREATE_MANY_ACTION = gql `
119
- mutation createManyAction($data: [ActionCreateManyInput!]!) {
120
- createManyAction(data: $data) {
121
- count
122
- }
123
- }`;
124
- const variables = {
125
- data: props.map(prop => ({
126
- sequence: prop.sequence !== undefined ? prop.sequence : undefined,
127
- tradeId: prop.tradeId !== undefined ? prop.tradeId : undefined,
128
- type: prop.type !== undefined ? prop.type : undefined,
129
- primary: prop.primary !== undefined ? prop.primary : undefined,
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
- else {
144
- return null;
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
- catch (error) {
148
- console.error('Error in createManyAction:', error);
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
- const [modules, client] = await Promise.all([
160
- (0, client_1.getApolloModules)(),
161
- globalClient
162
- ? Promise.resolve(globalClient)
163
- : client_1.client
164
- ]);
165
- const { gql, ApolloError } = modules;
166
- const UPDATE_ONE_ACTION = gql `
167
- mutation updateOneAction($data: ActionUpdateInput!, $where: ActionWhereUniqueInput!) {
168
- updateOneAction(data: $data, where: $where) {
169
- ${selectionSet}
170
- }
171
- }`;
172
- const variables = {
173
- where: {
174
- id: props.id !== undefined ? props.id : undefined,
175
- alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
176
- tradeId: props.tradeId !== undefined ? {
177
- equals: props.tradeId
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
- else {
294
- return null;
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
- catch (error) {
298
- console.error('Error in updateOneAction:', error);
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
- const [modules, client] = await Promise.all([
310
- (0, client_1.getApolloModules)(),
311
- globalClient
312
- ? Promise.resolve(globalClient)
313
- : client_1.client
314
- ]);
315
- const { gql, ApolloError } = modules;
316
- const UPSERT_ONE_ACTION = gql `
317
- mutation upsertOneAction($where: ActionWhereUniqueInput!, $create: ActionCreateInput!, $update: ActionUpdateInput!) {
318
- upsertOneAction(where: $where, create: $create, update: $update) {
319
- ${selectionSet}
320
- }
321
- }`;
322
- const variables = {
323
- where: {
324
- id: props.id !== undefined ? props.id : undefined,
325
- alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
326
- tradeId: props.tradeId !== undefined ? {
327
- equals: props.tradeId
328
- } : undefined,
329
- },
330
- create: {
331
- sequence: props.sequence !== undefined ? props.sequence : undefined,
332
- type: props.type !== undefined ? props.type : undefined,
333
- primary: props.primary !== undefined ? props.primary : undefined,
334
- note: props.note !== undefined ? props.note : undefined,
335
- status: props.status !== undefined ? props.status : undefined,
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
- update: {
371
- sequence: props.sequence !== undefined ? {
372
- set: props.sequence
373
- } : undefined,
374
- type: props.type !== undefined ? {
375
- set: props.type
376
- } : undefined,
377
- primary: props.primary !== undefined ? {
378
- set: props.primary
379
- } : undefined,
380
- note: props.note !== undefined ? {
381
- set: props.note
382
- } : undefined,
383
- status: props.status !== undefined ? {
384
- set: props.status
385
- } : undefined,
386
- alpacaOrderId: props.alpacaOrderId !== undefined ? {
387
- set: props.alpacaOrderId
388
- } : undefined,
389
- trade: props.trade ?
390
- typeof props.trade === 'object' && Object.keys(props.trade).length === 1 && (Object.keys(props.trade)[0] === 'id' || Object.keys(props.trade)[0] === 'symbol')
391
- ? {
392
- connect: {
393
- id: props.trade.id
394
- }
395
- } : { upsert: {
396
- where: {
397
- id: props.trade.id !== undefined ? {
398
- equals: props.trade.id
399
- } : undefined,
400
- alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
401
- equals: props.trade.alpacaAccountId
402
- } : undefined,
403
- symbol: props.trade.symbol !== undefined ? {
404
- equals: props.trade.symbol
405
- } : undefined,
406
- },
407
- update: {
408
- id: props.trade.id !== undefined ? {
409
- set: props.trade.id
410
- } : undefined,
411
- alpacaAccountId: props.trade.alpacaAccountId !== undefined ? {
412
- set: props.trade.alpacaAccountId
413
- } : undefined,
414
- qty: props.trade.qty !== undefined ? {
415
- set: props.trade.qty
416
- } : undefined,
417
- price: props.trade.price !== undefined ? {
418
- set: props.trade.price
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
- timestamp: props.trade.timestamp !== undefined ? {
439
- set: props.trade.timestamp
440
- } : undefined,
441
- status: props.trade.status !== undefined ? {
442
- set: props.trade.status
443
- } : undefined,
444
- symbol: props.trade.symbol !== undefined ? {
445
- set: props.trade.symbol
446
- } : undefined,
447
- },
448
- create: {
449
- alpacaAccountId: props.trade.alpacaAccountId !== undefined ? props.trade.alpacaAccountId : undefined,
450
- qty: props.trade.qty !== undefined ? props.trade.qty : undefined,
451
- price: props.trade.price !== undefined ? props.trade.price : undefined,
452
- total: props.trade.total !== undefined ? props.trade.total : undefined,
453
- signal: props.trade.signal !== undefined ? props.trade.signal : undefined,
454
- strategy: props.trade.strategy !== undefined ? props.trade.strategy : undefined,
455
- analysis: props.trade.analysis !== undefined ? props.trade.analysis : undefined,
456
- summary: props.trade.summary !== undefined ? props.trade.summary : undefined,
457
- confidence: props.trade.confidence !== undefined ? props.trade.confidence : undefined,
458
- timestamp: props.trade.timestamp !== undefined ? props.trade.timestamp : undefined,
459
- status: props.trade.status !== undefined ? props.trade.status : undefined,
460
- symbol: props.trade.symbol !== undefined ? props.trade.symbol : undefined,
461
- },
462
- }
463
- } : undefined,
464
- },
465
- };
466
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
467
- try {
468
- const response = await client.mutate({ mutation: UPSERT_ONE_ACTION, variables: filteredVariables });
469
- if (response.errors && response.errors.length > 0)
470
- throw new Error(response.errors[0].message);
471
- if (response && response.data && response.data.upsertOneAction) {
472
- return response.data.upsertOneAction;
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
- else {
475
- return null;
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
- catch (error) {
479
- console.error('Error in upsertOneAction:', error);
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
- const [modules, client] = await Promise.all([
491
- (0, client_1.getApolloModules)(),
492
- globalClient
493
- ? Promise.resolve(globalClient)
494
- : client_1.client
495
- ]);
496
- const { gql, ApolloError } = modules;
497
- const UPDATE_MANY_ACTION = gql `
498
- mutation updateManyAction($data: [ActionCreateManyInput!]!) {
499
- updateManyAction(data: $data) {
500
- count
501
- }
502
- }`;
503
- const variables = props.map(prop => ({
504
- where: {
505
- id: prop.id !== undefined ? prop.id : undefined,
506
- alpacaOrderId: prop.alpacaOrderId !== undefined ? prop.alpacaOrderId : undefined,
507
- tradeId: prop.tradeId !== undefined ? {
508
- equals: prop.tradeId
509
- } : undefined,
510
- },
511
- data: {
512
- id: prop.id !== undefined ? {
513
- set: prop.id
514
- } : undefined,
515
- sequence: prop.sequence !== undefined ? {
516
- set: prop.sequence
517
- } : undefined,
518
- type: prop.type !== undefined ? {
519
- set: prop.type
520
- } : undefined,
521
- primary: prop.primary !== undefined ? {
522
- set: prop.primary
523
- } : undefined,
524
- note: prop.note !== undefined ? {
525
- set: prop.note
526
- } : undefined,
527
- status: prop.status !== undefined ? {
528
- set: prop.status
529
- } : undefined,
530
- createdAt: prop.createdAt !== undefined ? {
531
- set: prop.createdAt
532
- } : undefined,
533
- updatedAt: prop.updatedAt !== undefined ? {
534
- set: prop.updatedAt
535
- } : undefined,
536
- alpacaOrderId: prop.alpacaOrderId !== undefined ? {
537
- set: prop.alpacaOrderId
538
- } : undefined,
539
- trade: prop.trade ?
540
- typeof prop.trade === 'object' && Object.keys(prop.trade).length === 1 && (Object.keys(prop.trade)[0] === 'id' || Object.keys(prop.trade)[0] === 'symbol')
541
- ? {
542
- connect: {
543
- id: prop.trade.id
544
- }
545
- } : { upsert: {
546
- where: {
547
- id: prop.trade.id !== undefined ? {
548
- equals: prop.trade.id
549
- } : undefined,
550
- alpacaAccountId: prop.trade.alpacaAccountId !== undefined ? {
551
- equals: prop.trade.alpacaAccountId
552
- } : undefined,
553
- symbol: prop.trade.symbol !== undefined ? {
554
- equals: prop.trade.symbol
555
- } : undefined,
556
- },
557
- update: {
558
- id: prop.trade.id !== undefined ? {
559
- set: prop.trade.id
560
- } : undefined,
561
- alpacaAccountId: prop.trade.alpacaAccountId !== undefined ? {
562
- set: prop.trade.alpacaAccountId
563
- } : undefined,
564
- qty: prop.trade.qty !== undefined ? {
565
- set: prop.trade.qty
566
- } : undefined,
567
- price: prop.trade.price !== undefined ? {
568
- set: prop.trade.price
569
- } : undefined,
570
- total: prop.trade.total !== undefined ? {
571
- set: prop.trade.total
572
- } : undefined,
573
- signal: prop.trade.signal !== undefined ? {
574
- set: prop.trade.signal
575
- } : undefined,
576
- strategy: prop.trade.strategy !== undefined ? {
577
- set: prop.trade.strategy
578
- } : undefined,
579
- analysis: prop.trade.analysis !== undefined ? {
580
- set: prop.trade.analysis
581
- } : undefined,
582
- summary: prop.trade.summary !== undefined ? {
583
- set: prop.trade.summary
584
- } : undefined,
585
- confidence: prop.trade.confidence !== undefined ? {
586
- set: prop.trade.confidence
587
- } : undefined,
588
- timestamp: prop.trade.timestamp !== undefined ? {
589
- set: prop.trade.timestamp
590
- } : undefined,
591
- status: prop.trade.status !== undefined ? {
592
- set: prop.trade.status
593
- } : undefined,
594
- symbol: prop.trade.symbol !== undefined ? {
595
- set: prop.trade.symbol
596
- } : undefined,
597
- },
598
- create: {
599
- alpacaAccountId: prop.trade.alpacaAccountId !== undefined ? prop.trade.alpacaAccountId : undefined,
600
- qty: prop.trade.qty !== undefined ? prop.trade.qty : undefined,
601
- price: prop.trade.price !== undefined ? prop.trade.price : undefined,
602
- total: prop.trade.total !== undefined ? prop.trade.total : undefined,
603
- signal: prop.trade.signal !== undefined ? prop.trade.signal : undefined,
604
- strategy: prop.trade.strategy !== undefined ? prop.trade.strategy : undefined,
605
- analysis: prop.trade.analysis !== undefined ? prop.trade.analysis : undefined,
606
- summary: prop.trade.summary !== undefined ? prop.trade.summary : undefined,
607
- confidence: prop.trade.confidence !== undefined ? prop.trade.confidence : undefined,
608
- timestamp: prop.trade.timestamp !== undefined ? prop.trade.timestamp : undefined,
609
- status: prop.trade.status !== undefined ? prop.trade.status : undefined,
610
- symbol: prop.trade.symbol !== undefined ? prop.trade.symbol : undefined,
611
- },
612
- }
613
- } : undefined,
614
- },
615
- }));
616
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
617
- try {
618
- const response = await client.mutate({ mutation: UPDATE_MANY_ACTION, variables: filteredVariables });
619
- if (response.errors && response.errors.length > 0)
620
- throw new Error(response.errors[0].message);
621
- if (response && response.data && response.data.updateManyAction) {
622
- return response.data.updateManyAction;
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
- else {
625
- return null;
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
- catch (error) {
629
- console.error('Error in updateManyAction:', error);
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
- * @param props - Properties to update.
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
- const [modules, client] = await Promise.all([
641
- (0, client_1.getApolloModules)(),
642
- globalClient
643
- ? Promise.resolve(globalClient)
644
- : client_1.client
645
- ]);
646
- const { gql, ApolloError } = modules;
647
- const DELETE_ONE_ACTION = gql `
648
- mutation deleteOneAction($where: ActionWhereUniqueInput!) {
649
- deleteOneAction(where: $where) {
650
- id
651
- }
652
- }`;
653
- const variables = {
654
- where: {
655
- id: props.id ? props.id : undefined,
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
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
659
- try {
660
- const response = await client.mutate({ mutation: DELETE_ONE_ACTION, variables: filteredVariables });
661
- if (response.errors && response.errors.length > 0)
662
- throw new Error(response.errors[0].message);
663
- if (response && response.data && response.data.deleteOneAction) {
664
- return response.data.deleteOneAction;
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
- else {
667
- return null;
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
- catch (error) {
671
- console.error('Error in deleteOneAction:', error);
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
- * @param props - Properties to update.
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
- const [modules, client] = await Promise.all([
684
- (0, client_1.getApolloModules)(),
685
- globalClient
686
- ? Promise.resolve(globalClient)
687
- : client_1.client
688
- ]);
689
- const { gql, ApolloError } = modules;
690
- const GET_ACTION = gql `
691
- query getAction($where: ActionWhereUniqueInput!) {
692
- getAction(where: $where) {
693
- ${selectionSet}
694
- }
695
- }`;
696
- const variables = {
697
- where: whereInput ? whereInput : {
698
- id: props.id !== undefined ? props.id : undefined,
699
- alpacaOrderId: props.alpacaOrderId !== undefined ? props.alpacaOrderId : undefined,
700
- tradeId: props.tradeId !== undefined ? {
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
- else {
717
- console.error('Error in getAction:', error);
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
- const [modules, client] = await Promise.all([
730
- (0, client_1.getApolloModules)(),
731
- globalClient
732
- ? Promise.resolve(globalClient)
733
- : client_1.client
734
- ]);
735
- const { gql, ApolloError } = modules;
736
- const GET_ALL_ACTION = gql `
737
- query getAllAction {
738
- actions {
739
- ${selectionSet}
740
- }
741
- }`;
742
- try {
743
- const response = await client.query({ query: GET_ALL_ACTION });
744
- if (response.errors && response.errors.length > 0)
745
- throw new Error(response.errors[0].message);
746
- return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.actions) !== null && _b !== void 0 ? _b : null;
747
- }
748
- catch (error) {
749
- if (error instanceof ApolloError && error.message === 'No Action found') {
750
- return null;
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
- else {
753
- console.error('Error in getAction:', error);
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
- const [modules, client] = await Promise.all([
766
- (0, client_1.getApolloModules)(),
767
- globalClient
768
- ? Promise.resolve(globalClient)
769
- : client_1.client
770
- ]);
771
- const { gql, ApolloError } = modules;
772
- const FIND_MANY_ACTION = gql `
773
- query findManyAction($where: ActionWhereInput!) {
774
- actions(where: $where) {
775
- ${selectionSet}
776
- }
777
- }`;
778
- const variables = {
779
- where: whereInput ? whereInput : {
780
- id: props.id !== undefined ? {
781
- equals: props.id
782
- } : undefined,
783
- tradeId: props.tradeId !== undefined ? {
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
- catch (error) {
801
- if (error instanceof ApolloError && error.message === 'No Action found') {
802
- return null;
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
- else {
805
- console.error('Error in getAction:', error);
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