adaptic-backend 1.0.340 → 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 (110) hide show
  1. package/Account.cjs +2543 -2265
  2. package/Account.d.ts +19 -2
  3. package/Action.cjs +1116 -838
  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 +1073 -795
  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 +1107 -836
  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 +1064 -793
  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/prismaClient.d.ts +4 -5
  104. package/esm/prismaClient.d.ts.map +1 -1
  105. package/esm/prismaClient.js.map +1 -1
  106. package/esm/prismaClient.mjs +13 -11
  107. package/package.json +1 -1
  108. package/prismaClient.cjs +13 -11
  109. package/prismaClient.d.ts +4 -5
  110. package/server.cjs +37 -5
@@ -102,1666 +102,1944 @@ exports.NewsArticleAssetSentiment = {
102
102
  * @param client - Apollo Client instance.
103
103
  * @returns The created NewsArticleAssetSentiment or null.
104
104
  */
105
+ /**
106
+ * Create a new NewsArticleAssetSentiment record.
107
+ * Enhanced with connection resilience against Prisma connection errors.
108
+ * @param props - Properties for the new record.
109
+ * @param globalClient - Apollo Client instance.
110
+ * @returns The created NewsArticleAssetSentiment or null.
111
+ */
105
112
  async create(props, globalClient) {
106
- const [modules, client] = await Promise.all([
107
- (0, client_1.getApolloModules)(),
108
- globalClient
109
- ? Promise.resolve(globalClient)
110
- : client_1.client
111
- ]);
112
- const { gql, ApolloError } = modules;
113
- const CREATE_ONE_NEWSARTICLEASSETSENTIMENT = gql `
114
- mutation createOneNewsArticleAssetSentiment($data: NewsArticleAssetSentimentCreateInput!) {
115
- createOneNewsArticleAssetSentiment(data: $data) {
116
- ${selectionSet}
117
- }
118
- }
119
- `;
120
- const variables = {
121
- data: {
122
- url: props.url !== undefined ? props.url : undefined,
123
- relevancyScore: props.relevancyScore !== undefined ? props.relevancyScore : undefined,
124
- sentimentScore: props.sentimentScore !== undefined ? props.sentimentScore : undefined,
125
- sentimentLabel: props.sentimentLabel !== undefined ? props.sentimentLabel : undefined,
126
- news: props.news ?
127
- typeof props.news === 'object' && Object.keys(props.news).length === 1 && Object.keys(props.news)[0] === 'id'
128
- ? { connect: {
129
- id: props.news.id
130
- }
131
- }
132
- : { connectOrCreate: {
133
- where: {
134
- id: props.news.id !== undefined ? props.news.id : undefined,
135
- url: props.news.url !== undefined ? props.news.url : undefined,
136
- title: props.news.title !== undefined ? {
137
- equals: props.news.title
138
- } : undefined,
139
- },
140
- create: {
141
- title: props.news.title !== undefined ? props.news.title : undefined,
142
- content: props.news.content !== undefined ? props.news.content : undefined,
143
- source: props.news.source !== undefined ? props.news.source : undefined,
144
- sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
145
- url: props.news.url !== undefined ? props.news.url : undefined,
146
- sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
147
- authors: props.news.authors !== undefined ? {
148
- set: props.news.authors
149
- } : undefined,
150
- summary: props.news.summary !== undefined ? props.news.summary : undefined,
151
- bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
152
- timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
153
- category: props.news.category !== undefined ? props.news.category : undefined,
154
- topics: props.news.topics !== undefined ? {
155
- set: props.news.topics
156
- } : undefined,
157
- logo: props.news.logo !== undefined ? props.news.logo : undefined,
158
- },
159
- }
160
- } : undefined,
161
- asset: props.asset ?
162
- typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && Object.keys(props.asset)[0] === 'id'
163
- ? { connect: {
164
- id: props.asset.id
165
- }
166
- }
167
- : { connectOrCreate: {
168
- where: {
169
- id: props.asset.id !== undefined ? props.asset.id : undefined,
170
- symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
171
- name: props.asset.name !== undefined ? props.asset.name : undefined,
172
- },
173
- create: {
174
- symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
175
- name: props.asset.name !== undefined ? props.asset.name : undefined,
176
- type: props.asset.type !== undefined ? props.asset.type : undefined,
177
- logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
178
- description: props.asset.description !== undefined ? props.asset.description : undefined,
179
- cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
180
- exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
181
- currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
182
- country: props.asset.country !== undefined ? props.asset.country : undefined,
183
- sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
184
- industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
185
- address: props.asset.address !== undefined ? props.asset.address : undefined,
186
- officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
187
- fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
188
- latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
189
- marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
190
- ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
191
- peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
192
- pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
193
- bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
194
- dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
195
- dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
196
- eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
197
- revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
198
- profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
199
- operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
200
- returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
201
- returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
202
- revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
203
- grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
204
- dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
205
- quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
206
- quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
207
- analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
208
- analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
209
- analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
210
- analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
211
- analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
212
- analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
213
- trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
214
- forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
215
- priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
216
- priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
217
- evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
218
- evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
219
- beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
220
- week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
221
- week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
222
- day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
223
- day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
224
- sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
225
- dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
226
- exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
227
- askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
228
- bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
229
- },
230
- }
231
- } : undefined,
232
- },
233
- };
234
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
235
- try {
236
- const response = await client.mutate({ mutation: CREATE_ONE_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
237
- if (response.errors && response.errors.length > 0)
238
- throw new Error(response.errors[0].message);
239
- if (response && response.data && response.data.createOneNewsArticleAssetSentiment) {
240
- return response.data.createOneNewsArticleAssetSentiment;
113
+ var _a, _b, _c, _d, _e;
114
+ // Maximum number of retries for database connection issues
115
+ const MAX_RETRIES = 3;
116
+ let retryCount = 0;
117
+ let lastError = null;
118
+ // Retry loop to handle potential database connection issues
119
+ while (retryCount < MAX_RETRIES) {
120
+ try {
121
+ const [modules, client] = await Promise.all([
122
+ (0, client_1.getApolloModules)(),
123
+ globalClient
124
+ ? Promise.resolve(globalClient)
125
+ : client_1.client
126
+ ]);
127
+ const { gql, ApolloError } = modules;
128
+ const CREATE_ONE_NEWSARTICLEASSETSENTIMENT = gql `
129
+ mutation createOneNewsArticleAssetSentiment($data: NewsArticleAssetSentimentCreateInput!) {
130
+ createOneNewsArticleAssetSentiment(data: $data) {
131
+ ${selectionSet}
132
+ }
133
+ }
134
+ `;
135
+ const variables = {
136
+ data: {
137
+ url: props.url !== undefined ? props.url : undefined,
138
+ relevancyScore: props.relevancyScore !== undefined ? props.relevancyScore : undefined,
139
+ sentimentScore: props.sentimentScore !== undefined ? props.sentimentScore : undefined,
140
+ sentimentLabel: props.sentimentLabel !== undefined ? props.sentimentLabel : undefined,
141
+ news: props.news ?
142
+ typeof props.news === 'object' && Object.keys(props.news).length === 1 && Object.keys(props.news)[0] === 'id'
143
+ ? { connect: {
144
+ id: props.news.id
145
+ }
146
+ }
147
+ : { connectOrCreate: {
148
+ where: {
149
+ id: props.news.id !== undefined ? props.news.id : undefined,
150
+ url: props.news.url !== undefined ? props.news.url : undefined,
151
+ title: props.news.title !== undefined ? {
152
+ equals: props.news.title
153
+ } : undefined,
154
+ },
155
+ create: {
156
+ title: props.news.title !== undefined ? props.news.title : undefined,
157
+ content: props.news.content !== undefined ? props.news.content : undefined,
158
+ source: props.news.source !== undefined ? props.news.source : undefined,
159
+ sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
160
+ url: props.news.url !== undefined ? props.news.url : undefined,
161
+ sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
162
+ authors: props.news.authors !== undefined ? {
163
+ set: props.news.authors
164
+ } : undefined,
165
+ summary: props.news.summary !== undefined ? props.news.summary : undefined,
166
+ bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
167
+ timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
168
+ category: props.news.category !== undefined ? props.news.category : undefined,
169
+ topics: props.news.topics !== undefined ? {
170
+ set: props.news.topics
171
+ } : undefined,
172
+ logo: props.news.logo !== undefined ? props.news.logo : undefined,
173
+ },
174
+ }
175
+ } : undefined,
176
+ asset: props.asset ?
177
+ typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && Object.keys(props.asset)[0] === 'id'
178
+ ? { connect: {
179
+ id: props.asset.id
180
+ }
181
+ }
182
+ : { connectOrCreate: {
183
+ where: {
184
+ id: props.asset.id !== undefined ? props.asset.id : undefined,
185
+ symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
186
+ name: props.asset.name !== undefined ? props.asset.name : undefined,
187
+ },
188
+ create: {
189
+ symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
190
+ name: props.asset.name !== undefined ? props.asset.name : undefined,
191
+ type: props.asset.type !== undefined ? props.asset.type : undefined,
192
+ logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
193
+ description: props.asset.description !== undefined ? props.asset.description : undefined,
194
+ cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
195
+ exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
196
+ currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
197
+ country: props.asset.country !== undefined ? props.asset.country : undefined,
198
+ sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
199
+ industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
200
+ address: props.asset.address !== undefined ? props.asset.address : undefined,
201
+ officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
202
+ fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
203
+ latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
204
+ marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
205
+ ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
206
+ peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
207
+ pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
208
+ bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
209
+ dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
210
+ dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
211
+ eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
212
+ revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
213
+ profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
214
+ operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
215
+ returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
216
+ returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
217
+ revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
218
+ grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
219
+ dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
220
+ quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
221
+ quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
222
+ analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
223
+ analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
224
+ analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
225
+ analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
226
+ analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
227
+ analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
228
+ trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
229
+ forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
230
+ priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
231
+ priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
232
+ evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
233
+ evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
234
+ beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
235
+ week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
236
+ week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
237
+ day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
238
+ day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
239
+ sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
240
+ dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
241
+ exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
242
+ askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
243
+ bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
244
+ },
245
+ }
246
+ } : undefined,
247
+ },
248
+ };
249
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
250
+ const response = await client.mutate({
251
+ mutation: CREATE_ONE_NEWSARTICLEASSETSENTIMENT,
252
+ variables: filteredVariables,
253
+ // Don't cache mutations, but ensure we're using the freshest context
254
+ fetchPolicy: 'no-cache'
255
+ });
256
+ if (response.errors && response.errors.length > 0)
257
+ throw new Error(response.errors[0].message);
258
+ if (response && response.data && response.data.createOneNewsArticleAssetSentiment) {
259
+ return response.data.createOneNewsArticleAssetSentiment;
260
+ }
261
+ else {
262
+ return null;
263
+ }
241
264
  }
242
- else {
243
- return null;
265
+ catch (error) {
266
+ lastError = error;
267
+ // Check if this is a database connection error that we should retry
268
+ const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
269
+ ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
270
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
271
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
272
+ (error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
273
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
274
+ retryCount++;
275
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
276
+ console.warn("Database connection error, retrying...");
277
+ await new Promise(resolve => setTimeout(resolve, delay));
278
+ continue;
279
+ }
280
+ // Log the error and rethrow
281
+ console.error("Database error occurred:", error);
282
+ throw error;
244
283
  }
245
284
  }
246
- catch (error) {
247
- console.error('Error in createOneNewsArticleAssetSentiment:', error);
248
- throw error;
249
- }
285
+ // If we exhausted retries, throw the last error
286
+ throw lastError;
250
287
  },
251
288
  /**
252
289
  * Create multiple NewsArticleAssetSentiment records.
290
+ * Enhanced with connection resilience against Prisma connection errors.
253
291
  * @param props - Array of NewsArticleAssetSentiment objects for the new records.
254
292
  * @param globalClient - Apollo Client instance.
255
293
  * @returns The count of created records or null.
256
294
  */
257
295
  async createMany(props, globalClient) {
258
- const [modules, client] = await Promise.all([
259
- (0, client_1.getApolloModules)(),
260
- globalClient
261
- ? Promise.resolve(globalClient)
262
- : client_1.client
263
- ]);
264
- const { gql, ApolloError } = modules;
265
- const CREATE_MANY_NEWSARTICLEASSETSENTIMENT = gql `
266
- mutation createManyNewsArticleAssetSentiment($data: [NewsArticleAssetSentimentCreateManyInput!]!) {
267
- createManyNewsArticleAssetSentiment(data: $data) {
268
- count
269
- }
270
- }`;
271
- const variables = {
272
- data: props.map(prop => ({
273
- assetId: prop.assetId !== undefined ? prop.assetId : undefined,
274
- newsArticleId: prop.newsArticleId !== undefined ? prop.newsArticleId : undefined,
275
- url: prop.url !== undefined ? prop.url : undefined,
276
- relevancyScore: prop.relevancyScore !== undefined ? prop.relevancyScore : undefined,
277
- sentimentScore: prop.sentimentScore !== undefined ? prop.sentimentScore : undefined,
278
- sentimentLabel: prop.sentimentLabel !== undefined ? prop.sentimentLabel : undefined,
279
- })),
280
- };
281
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
282
- try {
283
- const response = await client.mutate({ mutation: CREATE_MANY_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
284
- if (response.errors && response.errors.length > 0)
285
- throw new Error(response.errors[0].message);
286
- if (response && response.data && response.data.createManyNewsArticleAssetSentiment) {
287
- return response.data.createManyNewsArticleAssetSentiment;
296
+ var _a, _b, _c, _d, _e;
297
+ // Maximum number of retries for database connection issues
298
+ const MAX_RETRIES = 3;
299
+ let retryCount = 0;
300
+ let lastError = null;
301
+ // Retry loop to handle potential database connection issues
302
+ while (retryCount < MAX_RETRIES) {
303
+ try {
304
+ const [modules, client] = await Promise.all([
305
+ (0, client_1.getApolloModules)(),
306
+ globalClient
307
+ ? Promise.resolve(globalClient)
308
+ : client_1.client
309
+ ]);
310
+ const { gql, ApolloError } = modules;
311
+ const CREATE_MANY_NEWSARTICLEASSETSENTIMENT = gql `
312
+ mutation createManyNewsArticleAssetSentiment($data: [NewsArticleAssetSentimentCreateManyInput!]!) {
313
+ createManyNewsArticleAssetSentiment(data: $data) {
314
+ count
288
315
  }
289
- else {
290
- return null;
316
+ }`;
317
+ const variables = {
318
+ data: props.map(prop => ({
319
+ assetId: prop.assetId !== undefined ? prop.assetId : undefined,
320
+ newsArticleId: prop.newsArticleId !== undefined ? prop.newsArticleId : undefined,
321
+ url: prop.url !== undefined ? prop.url : undefined,
322
+ relevancyScore: prop.relevancyScore !== undefined ? prop.relevancyScore : undefined,
323
+ sentimentScore: prop.sentimentScore !== undefined ? prop.sentimentScore : undefined,
324
+ sentimentLabel: prop.sentimentLabel !== undefined ? prop.sentimentLabel : undefined,
325
+ })),
326
+ };
327
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
328
+ const response = await client.mutate({
329
+ mutation: CREATE_MANY_NEWSARTICLEASSETSENTIMENT,
330
+ variables: filteredVariables,
331
+ // Don't cache mutations, but ensure we're using the freshest context
332
+ fetchPolicy: 'no-cache'
333
+ });
334
+ if (response.errors && response.errors.length > 0)
335
+ throw new Error(response.errors[0].message);
336
+ if (response && response.data && response.data.createManyNewsArticleAssetSentiment) {
337
+ return response.data.createManyNewsArticleAssetSentiment;
338
+ }
339
+ else {
340
+ return null;
341
+ }
342
+ }
343
+ catch (error) {
344
+ lastError = error;
345
+ // Check if this is a database connection error that we should retry
346
+ const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
347
+ ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
348
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
349
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
350
+ (error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
351
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
352
+ retryCount++;
353
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
354
+ console.warn("Database connection error, retrying...");
355
+ await new Promise(resolve => setTimeout(resolve, delay));
356
+ continue;
357
+ }
358
+ // Log the error and rethrow
359
+ console.error("Database error occurred:", error);
360
+ throw error;
291
361
  }
292
362
  }
293
- catch (error) {
294
- console.error('Error in createManyNewsArticleAssetSentiment:', error);
295
- throw error;
296
- }
363
+ // If we exhausted retries, throw the last error
364
+ throw lastError;
297
365
  },
298
366
  /**
299
367
  * Update a single NewsArticleAssetSentiment record.
368
+ * Enhanced with connection resilience against Prisma connection errors.
300
369
  * @param props - Properties to update.
301
370
  * @param globalClient - Apollo Client instance.
302
371
  * @returns The updated NewsArticleAssetSentiment or null.
303
372
  */
304
373
  async update(props, globalClient) {
305
- const [modules, client] = await Promise.all([
306
- (0, client_1.getApolloModules)(),
307
- globalClient
308
- ? Promise.resolve(globalClient)
309
- : client_1.client
310
- ]);
311
- const { gql, ApolloError } = modules;
312
- const UPDATE_ONE_NEWSARTICLEASSETSENTIMENT = gql `
313
- mutation updateOneNewsArticleAssetSentiment($data: NewsArticleAssetSentimentUpdateInput!, $where: NewsArticleAssetSentimentWhereUniqueInput!) {
314
- updateOneNewsArticleAssetSentiment(data: $data, where: $where) {
315
- ${selectionSet}
316
- }
317
- }`;
318
- const variables = {
319
- where: {
320
- id: props.id !== undefined ? props.id : undefined,
321
- url: props.url !== undefined ? props.url : undefined,
322
- newsArticleId: props.newsArticleId !== undefined ? {
323
- equals: props.newsArticleId
324
- } : undefined,
325
- },
326
- data: {
327
- id: props.id !== undefined ? {
328
- set: props.id
329
- } : undefined,
330
- url: props.url !== undefined ? {
331
- set: props.url
332
- } : undefined,
333
- relevancyScore: props.relevancyScore !== undefined ? {
334
- set: props.relevancyScore
335
- } : undefined,
336
- sentimentScore: props.sentimentScore !== undefined ? {
337
- set: props.sentimentScore
338
- } : undefined,
339
- sentimentLabel: props.sentimentLabel !== undefined ? {
340
- set: props.sentimentLabel
341
- } : undefined,
342
- news: props.news ?
343
- typeof props.news === 'object' && Object.keys(props.news).length === 1 && (Object.keys(props.news)[0] === 'id' || Object.keys(props.news)[0] === 'symbol')
344
- ? {
345
- connect: {
346
- id: props.news.id
347
- }
348
- } : { upsert: {
349
- where: {
350
- id: props.news.id !== undefined ? {
351
- equals: props.news.id
352
- } : undefined,
353
- title: props.news.title !== undefined ? {
354
- equals: props.news.title
355
- } : undefined,
356
- url: props.news.url !== undefined ? {
357
- equals: props.news.url
358
- } : undefined,
359
- },
360
- update: {
361
- id: props.news.id !== undefined ? {
362
- set: props.news.id
363
- } : undefined,
364
- title: props.news.title !== undefined ? {
365
- set: props.news.title
366
- } : undefined,
367
- content: props.news.content !== undefined ? {
368
- set: props.news.content
369
- } : undefined,
370
- source: props.news.source !== undefined ? {
371
- set: props.news.source
372
- } : undefined,
373
- sourceDomain: props.news.sourceDomain !== undefined ? {
374
- set: props.news.sourceDomain
375
- } : undefined,
376
- url: props.news.url !== undefined ? {
377
- set: props.news.url
378
- } : undefined,
379
- sentiment: props.news.sentiment !== undefined ? {
380
- set: props.news.sentiment
381
- } : undefined,
382
- authors: props.news.authors !== undefined ? {
383
- set: props.news.authors
384
- } : undefined,
385
- summary: props.news.summary !== undefined ? {
386
- set: props.news.summary
387
- } : undefined,
388
- bannerImage: props.news.bannerImage !== undefined ? {
389
- set: props.news.bannerImage
390
- } : undefined,
391
- timePublished: props.news.timePublished !== undefined ? {
392
- set: props.news.timePublished
393
- } : undefined,
394
- category: props.news.category !== undefined ? {
395
- set: props.news.category
396
- } : undefined,
397
- topics: props.news.topics !== undefined ? {
398
- set: props.news.topics
399
- } : undefined,
400
- logo: props.news.logo !== undefined ? {
401
- set: props.news.logo
402
- } : undefined,
403
- },
404
- create: {
405
- title: props.news.title !== undefined ? props.news.title : undefined,
406
- content: props.news.content !== undefined ? props.news.content : undefined,
407
- source: props.news.source !== undefined ? props.news.source : undefined,
408
- sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
409
- url: props.news.url !== undefined ? props.news.url : undefined,
410
- sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
411
- authors: props.news.authors !== undefined ? {
412
- set: props.news.authors
413
- } : undefined,
414
- summary: props.news.summary !== undefined ? props.news.summary : undefined,
415
- bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
416
- timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
417
- category: props.news.category !== undefined ? props.news.category : undefined,
418
- topics: props.news.topics !== undefined ? {
419
- set: props.news.topics
420
- } : undefined,
421
- logo: props.news.logo !== undefined ? props.news.logo : undefined,
422
- },
423
- }
424
- } : undefined,
425
- asset: props.asset ?
426
- typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && (Object.keys(props.asset)[0] === 'id' || Object.keys(props.asset)[0] === 'symbol')
427
- ? {
428
- connect: {
429
- id: props.asset.id
430
- }
431
- } : { upsert: {
432
- where: {
433
- id: props.asset.id !== undefined ? {
434
- equals: props.asset.id
435
- } : undefined,
436
- symbol: props.asset.symbol !== undefined ? {
437
- equals: props.asset.symbol
438
- } : undefined,
439
- name: props.asset.name !== undefined ? {
440
- equals: props.asset.name
441
- } : undefined,
442
- },
443
- update: {
444
- id: props.asset.id !== undefined ? {
445
- set: props.asset.id
446
- } : undefined,
447
- symbol: props.asset.symbol !== undefined ? {
448
- set: props.asset.symbol
449
- } : undefined,
450
- name: props.asset.name !== undefined ? {
451
- set: props.asset.name
452
- } : undefined,
453
- type: props.asset.type !== undefined ? {
454
- set: props.asset.type
455
- } : undefined,
456
- logoUrl: props.asset.logoUrl !== undefined ? {
457
- set: props.asset.logoUrl
458
- } : undefined,
459
- description: props.asset.description !== undefined ? {
460
- set: props.asset.description
461
- } : undefined,
462
- cik: props.asset.cik !== undefined ? {
463
- set: props.asset.cik
464
- } : undefined,
465
- exchange: props.asset.exchange !== undefined ? {
466
- set: props.asset.exchange
467
- } : undefined,
468
- currency: props.asset.currency !== undefined ? {
469
- set: props.asset.currency
470
- } : undefined,
471
- country: props.asset.country !== undefined ? {
472
- set: props.asset.country
473
- } : undefined,
474
- sector: props.asset.sector !== undefined ? {
475
- set: props.asset.sector
476
- } : undefined,
477
- industry: props.asset.industry !== undefined ? {
478
- set: props.asset.industry
479
- } : undefined,
480
- address: props.asset.address !== undefined ? {
481
- set: props.asset.address
482
- } : undefined,
483
- officialSite: props.asset.officialSite !== undefined ? {
484
- set: props.asset.officialSite
485
- } : undefined,
486
- fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? {
487
- set: props.asset.fiscalYearEnd
488
- } : undefined,
489
- latestQuarter: props.asset.latestQuarter !== undefined ? {
490
- set: props.asset.latestQuarter
491
- } : undefined,
492
- marketCapitalization: props.asset.marketCapitalization !== undefined ? {
493
- set: props.asset.marketCapitalization
494
- } : undefined,
495
- ebitda: props.asset.ebitda !== undefined ? {
496
- set: props.asset.ebitda
497
- } : undefined,
498
- peRatio: props.asset.peRatio !== undefined ? {
499
- set: props.asset.peRatio
500
- } : undefined,
501
- pegRatio: props.asset.pegRatio !== undefined ? {
502
- set: props.asset.pegRatio
503
- } : undefined,
504
- bookValue: props.asset.bookValue !== undefined ? {
505
- set: props.asset.bookValue
506
- } : undefined,
507
- dividendPerShare: props.asset.dividendPerShare !== undefined ? {
508
- set: props.asset.dividendPerShare
509
- } : undefined,
510
- dividendYield: props.asset.dividendYield !== undefined ? {
511
- set: props.asset.dividendYield
512
- } : undefined,
513
- eps: props.asset.eps !== undefined ? {
514
- set: props.asset.eps
515
- } : undefined,
516
- revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? {
517
- set: props.asset.revenuePerShareTTM
518
- } : undefined,
519
- profitMargin: props.asset.profitMargin !== undefined ? {
520
- set: props.asset.profitMargin
521
- } : undefined,
522
- operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? {
523
- set: props.asset.operatingMarginTTM
524
- } : undefined,
525
- returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? {
526
- set: props.asset.returnOnAssetsTTM
527
- } : undefined,
528
- returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? {
529
- set: props.asset.returnOnEquityTTM
530
- } : undefined,
531
- revenueTTM: props.asset.revenueTTM !== undefined ? {
532
- set: props.asset.revenueTTM
533
- } : undefined,
534
- grossProfitTTM: props.asset.grossProfitTTM !== undefined ? {
535
- set: props.asset.grossProfitTTM
536
- } : undefined,
537
- dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? {
538
- set: props.asset.dilutedEPSTTM
539
- } : undefined,
540
- quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? {
541
- set: props.asset.quarterlyEarningsGrowthYOY
542
- } : undefined,
543
- quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? {
544
- set: props.asset.quarterlyRevenueGrowthYOY
545
- } : undefined,
546
- analystTargetPrice: props.asset.analystTargetPrice !== undefined ? {
547
- set: props.asset.analystTargetPrice
548
- } : undefined,
549
- analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? {
550
- set: props.asset.analystRatingStrongBuy
551
- } : undefined,
552
- analystRatingBuy: props.asset.analystRatingBuy !== undefined ? {
553
- set: props.asset.analystRatingBuy
554
- } : undefined,
555
- analystRatingHold: props.asset.analystRatingHold !== undefined ? {
556
- set: props.asset.analystRatingHold
557
- } : undefined,
558
- analystRatingSell: props.asset.analystRatingSell !== undefined ? {
559
- set: props.asset.analystRatingSell
560
- } : undefined,
561
- analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? {
562
- set: props.asset.analystRatingStrongSell
563
- } : undefined,
564
- trailingPE: props.asset.trailingPE !== undefined ? {
565
- set: props.asset.trailingPE
566
- } : undefined,
567
- forwardPE: props.asset.forwardPE !== undefined ? {
568
- set: props.asset.forwardPE
569
- } : undefined,
570
- priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? {
571
- set: props.asset.priceToSalesRatioTTM
572
- } : undefined,
573
- priceToBookRatio: props.asset.priceToBookRatio !== undefined ? {
574
- set: props.asset.priceToBookRatio
575
- } : undefined,
576
- evToRevenue: props.asset.evToRevenue !== undefined ? {
577
- set: props.asset.evToRevenue
578
- } : undefined,
579
- evToEbitda: props.asset.evToEbitda !== undefined ? {
580
- set: props.asset.evToEbitda
581
- } : undefined,
582
- beta: props.asset.beta !== undefined ? {
583
- set: props.asset.beta
584
- } : undefined,
585
- week52High: props.asset.week52High !== undefined ? {
586
- set: props.asset.week52High
587
- } : undefined,
588
- week52Low: props.asset.week52Low !== undefined ? {
589
- set: props.asset.week52Low
590
- } : undefined,
591
- day50MovingAverage: props.asset.day50MovingAverage !== undefined ? {
592
- set: props.asset.day50MovingAverage
593
- } : undefined,
594
- day200MovingAverage: props.asset.day200MovingAverage !== undefined ? {
595
- set: props.asset.day200MovingAverage
596
- } : undefined,
597
- sharesOutstanding: props.asset.sharesOutstanding !== undefined ? {
598
- set: props.asset.sharesOutstanding
599
- } : undefined,
600
- dividendDate: props.asset.dividendDate !== undefined ? {
601
- set: props.asset.dividendDate
602
- } : undefined,
603
- exDividendDate: props.asset.exDividendDate !== undefined ? {
604
- set: props.asset.exDividendDate
605
- } : undefined,
606
- askPrice: props.asset.askPrice !== undefined ? {
607
- set: props.asset.askPrice
608
- } : undefined,
609
- bidPrice: props.asset.bidPrice !== undefined ? {
610
- set: props.asset.bidPrice
611
- } : undefined,
612
- },
613
- create: {
614
- symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
615
- name: props.asset.name !== undefined ? props.asset.name : undefined,
616
- type: props.asset.type !== undefined ? props.asset.type : undefined,
617
- logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
618
- description: props.asset.description !== undefined ? props.asset.description : undefined,
619
- cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
620
- exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
621
- currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
622
- country: props.asset.country !== undefined ? props.asset.country : undefined,
623
- sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
624
- industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
625
- address: props.asset.address !== undefined ? props.asset.address : undefined,
626
- officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
627
- fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
628
- latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
629
- marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
630
- ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
631
- peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
632
- pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
633
- bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
634
- dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
635
- dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
636
- eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
637
- revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
638
- profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
639
- operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
640
- returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
641
- returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
642
- revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
643
- grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
644
- dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
645
- quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
646
- quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
647
- analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
648
- analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
649
- analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
650
- analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
651
- analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
652
- analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
653
- trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
654
- forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
655
- priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
656
- priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
657
- evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
658
- evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
659
- beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
660
- week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
661
- week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
662
- day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
663
- day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
664
- sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
665
- dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
666
- exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
667
- askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
668
- bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
669
- },
670
- }
671
- } : undefined,
672
- },
673
- };
674
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
675
- try {
676
- const response = await client.mutate({ mutation: UPDATE_ONE_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
677
- if (response.errors && response.errors.length > 0)
678
- throw new Error(response.errors[0].message);
679
- if (response && response.data && response.data.updateOneNewsArticleAssetSentiment) {
680
- return response.data.updateOneNewsArticleAssetSentiment;
374
+ var _a, _b, _c, _d, _e;
375
+ // Maximum number of retries for database connection issues
376
+ const MAX_RETRIES = 3;
377
+ let retryCount = 0;
378
+ let lastError = null;
379
+ // Retry loop to handle potential database connection issues
380
+ while (retryCount < MAX_RETRIES) {
381
+ try {
382
+ const [modules, client] = await Promise.all([
383
+ (0, client_1.getApolloModules)(),
384
+ globalClient
385
+ ? Promise.resolve(globalClient)
386
+ : client_1.client
387
+ ]);
388
+ const { gql, ApolloError } = modules;
389
+ const UPDATE_ONE_NEWSARTICLEASSETSENTIMENT = gql `
390
+ mutation updateOneNewsArticleAssetSentiment($data: NewsArticleAssetSentimentUpdateInput!, $where: NewsArticleAssetSentimentWhereUniqueInput!) {
391
+ updateOneNewsArticleAssetSentiment(data: $data, where: $where) {
392
+ ${selectionSet}
681
393
  }
682
- else {
683
- return null;
394
+ }`;
395
+ const variables = {
396
+ where: {
397
+ id: props.id !== undefined ? props.id : undefined,
398
+ url: props.url !== undefined ? props.url : undefined,
399
+ newsArticleId: props.newsArticleId !== undefined ? {
400
+ equals: props.newsArticleId
401
+ } : undefined,
402
+ },
403
+ data: {
404
+ id: props.id !== undefined ? {
405
+ set: props.id
406
+ } : undefined,
407
+ url: props.url !== undefined ? {
408
+ set: props.url
409
+ } : undefined,
410
+ relevancyScore: props.relevancyScore !== undefined ? {
411
+ set: props.relevancyScore
412
+ } : undefined,
413
+ sentimentScore: props.sentimentScore !== undefined ? {
414
+ set: props.sentimentScore
415
+ } : undefined,
416
+ sentimentLabel: props.sentimentLabel !== undefined ? {
417
+ set: props.sentimentLabel
418
+ } : undefined,
419
+ news: props.news ?
420
+ typeof props.news === 'object' && Object.keys(props.news).length === 1 && (Object.keys(props.news)[0] === 'id' || Object.keys(props.news)[0] === 'symbol')
421
+ ? {
422
+ connect: {
423
+ id: props.news.id
424
+ }
425
+ } : { upsert: {
426
+ where: {
427
+ id: props.news.id !== undefined ? {
428
+ equals: props.news.id
429
+ } : undefined,
430
+ title: props.news.title !== undefined ? {
431
+ equals: props.news.title
432
+ } : undefined,
433
+ url: props.news.url !== undefined ? {
434
+ equals: props.news.url
435
+ } : undefined,
436
+ },
437
+ update: {
438
+ id: props.news.id !== undefined ? {
439
+ set: props.news.id
440
+ } : undefined,
441
+ title: props.news.title !== undefined ? {
442
+ set: props.news.title
443
+ } : undefined,
444
+ content: props.news.content !== undefined ? {
445
+ set: props.news.content
446
+ } : undefined,
447
+ source: props.news.source !== undefined ? {
448
+ set: props.news.source
449
+ } : undefined,
450
+ sourceDomain: props.news.sourceDomain !== undefined ? {
451
+ set: props.news.sourceDomain
452
+ } : undefined,
453
+ url: props.news.url !== undefined ? {
454
+ set: props.news.url
455
+ } : undefined,
456
+ sentiment: props.news.sentiment !== undefined ? {
457
+ set: props.news.sentiment
458
+ } : undefined,
459
+ authors: props.news.authors !== undefined ? {
460
+ set: props.news.authors
461
+ } : undefined,
462
+ summary: props.news.summary !== undefined ? {
463
+ set: props.news.summary
464
+ } : undefined,
465
+ bannerImage: props.news.bannerImage !== undefined ? {
466
+ set: props.news.bannerImage
467
+ } : undefined,
468
+ timePublished: props.news.timePublished !== undefined ? {
469
+ set: props.news.timePublished
470
+ } : undefined,
471
+ category: props.news.category !== undefined ? {
472
+ set: props.news.category
473
+ } : undefined,
474
+ topics: props.news.topics !== undefined ? {
475
+ set: props.news.topics
476
+ } : undefined,
477
+ logo: props.news.logo !== undefined ? {
478
+ set: props.news.logo
479
+ } : undefined,
480
+ },
481
+ create: {
482
+ title: props.news.title !== undefined ? props.news.title : undefined,
483
+ content: props.news.content !== undefined ? props.news.content : undefined,
484
+ source: props.news.source !== undefined ? props.news.source : undefined,
485
+ sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
486
+ url: props.news.url !== undefined ? props.news.url : undefined,
487
+ sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
488
+ authors: props.news.authors !== undefined ? {
489
+ set: props.news.authors
490
+ } : undefined,
491
+ summary: props.news.summary !== undefined ? props.news.summary : undefined,
492
+ bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
493
+ timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
494
+ category: props.news.category !== undefined ? props.news.category : undefined,
495
+ topics: props.news.topics !== undefined ? {
496
+ set: props.news.topics
497
+ } : undefined,
498
+ logo: props.news.logo !== undefined ? props.news.logo : undefined,
499
+ },
500
+ }
501
+ } : undefined,
502
+ asset: props.asset ?
503
+ typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && (Object.keys(props.asset)[0] === 'id' || Object.keys(props.asset)[0] === 'symbol')
504
+ ? {
505
+ connect: {
506
+ id: props.asset.id
507
+ }
508
+ } : { upsert: {
509
+ where: {
510
+ id: props.asset.id !== undefined ? {
511
+ equals: props.asset.id
512
+ } : undefined,
513
+ symbol: props.asset.symbol !== undefined ? {
514
+ equals: props.asset.symbol
515
+ } : undefined,
516
+ name: props.asset.name !== undefined ? {
517
+ equals: props.asset.name
518
+ } : undefined,
519
+ },
520
+ update: {
521
+ id: props.asset.id !== undefined ? {
522
+ set: props.asset.id
523
+ } : undefined,
524
+ symbol: props.asset.symbol !== undefined ? {
525
+ set: props.asset.symbol
526
+ } : undefined,
527
+ name: props.asset.name !== undefined ? {
528
+ set: props.asset.name
529
+ } : undefined,
530
+ type: props.asset.type !== undefined ? {
531
+ set: props.asset.type
532
+ } : undefined,
533
+ logoUrl: props.asset.logoUrl !== undefined ? {
534
+ set: props.asset.logoUrl
535
+ } : undefined,
536
+ description: props.asset.description !== undefined ? {
537
+ set: props.asset.description
538
+ } : undefined,
539
+ cik: props.asset.cik !== undefined ? {
540
+ set: props.asset.cik
541
+ } : undefined,
542
+ exchange: props.asset.exchange !== undefined ? {
543
+ set: props.asset.exchange
544
+ } : undefined,
545
+ currency: props.asset.currency !== undefined ? {
546
+ set: props.asset.currency
547
+ } : undefined,
548
+ country: props.asset.country !== undefined ? {
549
+ set: props.asset.country
550
+ } : undefined,
551
+ sector: props.asset.sector !== undefined ? {
552
+ set: props.asset.sector
553
+ } : undefined,
554
+ industry: props.asset.industry !== undefined ? {
555
+ set: props.asset.industry
556
+ } : undefined,
557
+ address: props.asset.address !== undefined ? {
558
+ set: props.asset.address
559
+ } : undefined,
560
+ officialSite: props.asset.officialSite !== undefined ? {
561
+ set: props.asset.officialSite
562
+ } : undefined,
563
+ fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? {
564
+ set: props.asset.fiscalYearEnd
565
+ } : undefined,
566
+ latestQuarter: props.asset.latestQuarter !== undefined ? {
567
+ set: props.asset.latestQuarter
568
+ } : undefined,
569
+ marketCapitalization: props.asset.marketCapitalization !== undefined ? {
570
+ set: props.asset.marketCapitalization
571
+ } : undefined,
572
+ ebitda: props.asset.ebitda !== undefined ? {
573
+ set: props.asset.ebitda
574
+ } : undefined,
575
+ peRatio: props.asset.peRatio !== undefined ? {
576
+ set: props.asset.peRatio
577
+ } : undefined,
578
+ pegRatio: props.asset.pegRatio !== undefined ? {
579
+ set: props.asset.pegRatio
580
+ } : undefined,
581
+ bookValue: props.asset.bookValue !== undefined ? {
582
+ set: props.asset.bookValue
583
+ } : undefined,
584
+ dividendPerShare: props.asset.dividendPerShare !== undefined ? {
585
+ set: props.asset.dividendPerShare
586
+ } : undefined,
587
+ dividendYield: props.asset.dividendYield !== undefined ? {
588
+ set: props.asset.dividendYield
589
+ } : undefined,
590
+ eps: props.asset.eps !== undefined ? {
591
+ set: props.asset.eps
592
+ } : undefined,
593
+ revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? {
594
+ set: props.asset.revenuePerShareTTM
595
+ } : undefined,
596
+ profitMargin: props.asset.profitMargin !== undefined ? {
597
+ set: props.asset.profitMargin
598
+ } : undefined,
599
+ operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? {
600
+ set: props.asset.operatingMarginTTM
601
+ } : undefined,
602
+ returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? {
603
+ set: props.asset.returnOnAssetsTTM
604
+ } : undefined,
605
+ returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? {
606
+ set: props.asset.returnOnEquityTTM
607
+ } : undefined,
608
+ revenueTTM: props.asset.revenueTTM !== undefined ? {
609
+ set: props.asset.revenueTTM
610
+ } : undefined,
611
+ grossProfitTTM: props.asset.grossProfitTTM !== undefined ? {
612
+ set: props.asset.grossProfitTTM
613
+ } : undefined,
614
+ dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? {
615
+ set: props.asset.dilutedEPSTTM
616
+ } : undefined,
617
+ quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? {
618
+ set: props.asset.quarterlyEarningsGrowthYOY
619
+ } : undefined,
620
+ quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? {
621
+ set: props.asset.quarterlyRevenueGrowthYOY
622
+ } : undefined,
623
+ analystTargetPrice: props.asset.analystTargetPrice !== undefined ? {
624
+ set: props.asset.analystTargetPrice
625
+ } : undefined,
626
+ analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? {
627
+ set: props.asset.analystRatingStrongBuy
628
+ } : undefined,
629
+ analystRatingBuy: props.asset.analystRatingBuy !== undefined ? {
630
+ set: props.asset.analystRatingBuy
631
+ } : undefined,
632
+ analystRatingHold: props.asset.analystRatingHold !== undefined ? {
633
+ set: props.asset.analystRatingHold
634
+ } : undefined,
635
+ analystRatingSell: props.asset.analystRatingSell !== undefined ? {
636
+ set: props.asset.analystRatingSell
637
+ } : undefined,
638
+ analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? {
639
+ set: props.asset.analystRatingStrongSell
640
+ } : undefined,
641
+ trailingPE: props.asset.trailingPE !== undefined ? {
642
+ set: props.asset.trailingPE
643
+ } : undefined,
644
+ forwardPE: props.asset.forwardPE !== undefined ? {
645
+ set: props.asset.forwardPE
646
+ } : undefined,
647
+ priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? {
648
+ set: props.asset.priceToSalesRatioTTM
649
+ } : undefined,
650
+ priceToBookRatio: props.asset.priceToBookRatio !== undefined ? {
651
+ set: props.asset.priceToBookRatio
652
+ } : undefined,
653
+ evToRevenue: props.asset.evToRevenue !== undefined ? {
654
+ set: props.asset.evToRevenue
655
+ } : undefined,
656
+ evToEbitda: props.asset.evToEbitda !== undefined ? {
657
+ set: props.asset.evToEbitda
658
+ } : undefined,
659
+ beta: props.asset.beta !== undefined ? {
660
+ set: props.asset.beta
661
+ } : undefined,
662
+ week52High: props.asset.week52High !== undefined ? {
663
+ set: props.asset.week52High
664
+ } : undefined,
665
+ week52Low: props.asset.week52Low !== undefined ? {
666
+ set: props.asset.week52Low
667
+ } : undefined,
668
+ day50MovingAverage: props.asset.day50MovingAverage !== undefined ? {
669
+ set: props.asset.day50MovingAverage
670
+ } : undefined,
671
+ day200MovingAverage: props.asset.day200MovingAverage !== undefined ? {
672
+ set: props.asset.day200MovingAverage
673
+ } : undefined,
674
+ sharesOutstanding: props.asset.sharesOutstanding !== undefined ? {
675
+ set: props.asset.sharesOutstanding
676
+ } : undefined,
677
+ dividendDate: props.asset.dividendDate !== undefined ? {
678
+ set: props.asset.dividendDate
679
+ } : undefined,
680
+ exDividendDate: props.asset.exDividendDate !== undefined ? {
681
+ set: props.asset.exDividendDate
682
+ } : undefined,
683
+ askPrice: props.asset.askPrice !== undefined ? {
684
+ set: props.asset.askPrice
685
+ } : undefined,
686
+ bidPrice: props.asset.bidPrice !== undefined ? {
687
+ set: props.asset.bidPrice
688
+ } : undefined,
689
+ },
690
+ create: {
691
+ symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
692
+ name: props.asset.name !== undefined ? props.asset.name : undefined,
693
+ type: props.asset.type !== undefined ? props.asset.type : undefined,
694
+ logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
695
+ description: props.asset.description !== undefined ? props.asset.description : undefined,
696
+ cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
697
+ exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
698
+ currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
699
+ country: props.asset.country !== undefined ? props.asset.country : undefined,
700
+ sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
701
+ industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
702
+ address: props.asset.address !== undefined ? props.asset.address : undefined,
703
+ officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
704
+ fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
705
+ latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
706
+ marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
707
+ ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
708
+ peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
709
+ pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
710
+ bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
711
+ dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
712
+ dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
713
+ eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
714
+ revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
715
+ profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
716
+ operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
717
+ returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
718
+ returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
719
+ revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
720
+ grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
721
+ dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
722
+ quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
723
+ quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
724
+ analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
725
+ analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
726
+ analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
727
+ analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
728
+ analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
729
+ analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
730
+ trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
731
+ forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
732
+ priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
733
+ priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
734
+ evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
735
+ evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
736
+ beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
737
+ week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
738
+ week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
739
+ day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
740
+ day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
741
+ sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
742
+ dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
743
+ exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
744
+ askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
745
+ bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
746
+ },
747
+ }
748
+ } : undefined,
749
+ },
750
+ };
751
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
752
+ const response = await client.mutate({
753
+ mutation: UPDATE_ONE_NEWSARTICLEASSETSENTIMENT,
754
+ variables: filteredVariables,
755
+ // Don't cache mutations, but ensure we're using the freshest context
756
+ fetchPolicy: 'no-cache'
757
+ });
758
+ if (response.errors && response.errors.length > 0)
759
+ throw new Error(response.errors[0].message);
760
+ if (response && response.data && response.data.updateOneNewsArticleAssetSentiment) {
761
+ return response.data.updateOneNewsArticleAssetSentiment;
762
+ }
763
+ else {
764
+ return null;
765
+ }
766
+ }
767
+ catch (error) {
768
+ lastError = error;
769
+ // Check if this is a database connection error that we should retry
770
+ const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
771
+ ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
772
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
773
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
774
+ (error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
775
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
776
+ retryCount++;
777
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
778
+ console.warn("Database connection error, retrying...");
779
+ await new Promise(resolve => setTimeout(resolve, delay));
780
+ continue;
781
+ }
782
+ // Log the error and rethrow
783
+ console.error("Database error occurred:", error);
784
+ throw error;
684
785
  }
685
786
  }
686
- catch (error) {
687
- console.error('Error in updateOneNewsArticleAssetSentiment:', error);
688
- throw error;
689
- }
787
+ // If we exhausted retries, throw the last error
788
+ throw lastError;
690
789
  },
691
790
  /**
692
791
  * Upsert a single NewsArticleAssetSentiment record.
792
+ * Enhanced with connection resilience against Prisma connection errors.
693
793
  * @param props - Properties to update.
694
794
  * @param globalClient - Apollo Client instance.
695
795
  * @returns The updated NewsArticleAssetSentiment or null.
696
796
  */
697
797
  async upsert(props, globalClient) {
698
- const [modules, client] = await Promise.all([
699
- (0, client_1.getApolloModules)(),
700
- globalClient
701
- ? Promise.resolve(globalClient)
702
- : client_1.client
703
- ]);
704
- const { gql, ApolloError } = modules;
705
- const UPSERT_ONE_NEWSARTICLEASSETSENTIMENT = gql `
706
- mutation upsertOneNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereUniqueInput!, $create: NewsArticleAssetSentimentCreateInput!, $update: NewsArticleAssetSentimentUpdateInput!) {
707
- upsertOneNewsArticleAssetSentiment(where: $where, create: $create, update: $update) {
708
- ${selectionSet}
709
- }
710
- }`;
711
- const variables = {
712
- where: {
713
- id: props.id !== undefined ? props.id : undefined,
714
- url: props.url !== undefined ? props.url : undefined,
715
- newsArticleId: props.newsArticleId !== undefined ? {
716
- equals: props.newsArticleId
717
- } : undefined,
718
- },
719
- create: {
720
- url: props.url !== undefined ? props.url : undefined,
721
- relevancyScore: props.relevancyScore !== undefined ? props.relevancyScore : undefined,
722
- sentimentScore: props.sentimentScore !== undefined ? props.sentimentScore : undefined,
723
- sentimentLabel: props.sentimentLabel !== undefined ? props.sentimentLabel : undefined,
724
- news: props.news ?
725
- typeof props.news === 'object' && Object.keys(props.news).length === 1 && Object.keys(props.news)[0] === 'id'
726
- ? { connect: {
727
- id: props.news.id
728
- }
729
- }
730
- : { connectOrCreate: {
731
- where: {
732
- id: props.news.id !== undefined ? props.news.id : undefined,
733
- url: props.news.url !== undefined ? props.news.url : undefined,
734
- title: props.news.title !== undefined ? {
735
- equals: props.news.title
736
- } : undefined,
737
- },
738
- create: {
739
- title: props.news.title !== undefined ? props.news.title : undefined,
740
- content: props.news.content !== undefined ? props.news.content : undefined,
741
- source: props.news.source !== undefined ? props.news.source : undefined,
742
- sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
743
- url: props.news.url !== undefined ? props.news.url : undefined,
744
- sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
745
- authors: props.news.authors !== undefined ? {
746
- set: props.news.authors
747
- } : undefined,
748
- summary: props.news.summary !== undefined ? props.news.summary : undefined,
749
- bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
750
- timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
751
- category: props.news.category !== undefined ? props.news.category : undefined,
752
- topics: props.news.topics !== undefined ? {
753
- set: props.news.topics
754
- } : undefined,
755
- logo: props.news.logo !== undefined ? props.news.logo : undefined,
756
- },
757
- }
798
+ var _a, _b, _c, _d, _e;
799
+ // Maximum number of retries for database connection issues
800
+ const MAX_RETRIES = 3;
801
+ let retryCount = 0;
802
+ let lastError = null;
803
+ // Retry loop to handle potential database connection issues
804
+ while (retryCount < MAX_RETRIES) {
805
+ try {
806
+ const [modules, client] = await Promise.all([
807
+ (0, client_1.getApolloModules)(),
808
+ globalClient
809
+ ? Promise.resolve(globalClient)
810
+ : client_1.client
811
+ ]);
812
+ const { gql, ApolloError } = modules;
813
+ const UPSERT_ONE_NEWSARTICLEASSETSENTIMENT = gql `
814
+ mutation upsertOneNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereUniqueInput!, $create: NewsArticleAssetSentimentCreateInput!, $update: NewsArticleAssetSentimentUpdateInput!) {
815
+ upsertOneNewsArticleAssetSentiment(where: $where, create: $create, update: $update) {
816
+ ${selectionSet}
817
+ }
818
+ }`;
819
+ const variables = {
820
+ where: {
821
+ id: props.id !== undefined ? props.id : undefined,
822
+ url: props.url !== undefined ? props.url : undefined,
823
+ newsArticleId: props.newsArticleId !== undefined ? {
824
+ equals: props.newsArticleId
758
825
  } : undefined,
759
- asset: props.asset ?
760
- typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && Object.keys(props.asset)[0] === 'id'
761
- ? { connect: {
762
- id: props.asset.id
763
- }
764
- }
765
- : { connectOrCreate: {
766
- where: {
767
- id: props.asset.id !== undefined ? props.asset.id : undefined,
768
- symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
769
- name: props.asset.name !== undefined ? props.asset.name : undefined,
770
- },
771
- create: {
772
- symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
773
- name: props.asset.name !== undefined ? props.asset.name : undefined,
774
- type: props.asset.type !== undefined ? props.asset.type : undefined,
775
- logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
776
- description: props.asset.description !== undefined ? props.asset.description : undefined,
777
- cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
778
- exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
779
- currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
780
- country: props.asset.country !== undefined ? props.asset.country : undefined,
781
- sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
782
- industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
783
- address: props.asset.address !== undefined ? props.asset.address : undefined,
784
- officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
785
- fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
786
- latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
787
- marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
788
- ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
789
- peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
790
- pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
791
- bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
792
- dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
793
- dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
794
- eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
795
- revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
796
- profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
797
- operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
798
- returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
799
- returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
800
- revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
801
- grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
802
- dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
803
- quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
804
- quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
805
- analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
806
- analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
807
- analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
808
- analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
809
- analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
810
- analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
811
- trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
812
- forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
813
- priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
814
- priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
815
- evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
816
- evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
817
- beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
818
- week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
819
- week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
820
- day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
821
- day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
822
- sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
823
- dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
824
- exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
825
- askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
826
- bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
827
- },
828
- }
826
+ },
827
+ create: {
828
+ url: props.url !== undefined ? props.url : undefined,
829
+ relevancyScore: props.relevancyScore !== undefined ? props.relevancyScore : undefined,
830
+ sentimentScore: props.sentimentScore !== undefined ? props.sentimentScore : undefined,
831
+ sentimentLabel: props.sentimentLabel !== undefined ? props.sentimentLabel : undefined,
832
+ news: props.news ?
833
+ typeof props.news === 'object' && Object.keys(props.news).length === 1 && Object.keys(props.news)[0] === 'id'
834
+ ? { connect: {
835
+ id: props.news.id
836
+ }
837
+ }
838
+ : { connectOrCreate: {
839
+ where: {
840
+ id: props.news.id !== undefined ? props.news.id : undefined,
841
+ url: props.news.url !== undefined ? props.news.url : undefined,
842
+ title: props.news.title !== undefined ? {
843
+ equals: props.news.title
844
+ } : undefined,
845
+ },
846
+ create: {
847
+ title: props.news.title !== undefined ? props.news.title : undefined,
848
+ content: props.news.content !== undefined ? props.news.content : undefined,
849
+ source: props.news.source !== undefined ? props.news.source : undefined,
850
+ sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
851
+ url: props.news.url !== undefined ? props.news.url : undefined,
852
+ sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
853
+ authors: props.news.authors !== undefined ? {
854
+ set: props.news.authors
855
+ } : undefined,
856
+ summary: props.news.summary !== undefined ? props.news.summary : undefined,
857
+ bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
858
+ timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
859
+ category: props.news.category !== undefined ? props.news.category : undefined,
860
+ topics: props.news.topics !== undefined ? {
861
+ set: props.news.topics
862
+ } : undefined,
863
+ logo: props.news.logo !== undefined ? props.news.logo : undefined,
864
+ },
865
+ }
866
+ } : undefined,
867
+ asset: props.asset ?
868
+ typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && Object.keys(props.asset)[0] === 'id'
869
+ ? { connect: {
870
+ id: props.asset.id
871
+ }
872
+ }
873
+ : { connectOrCreate: {
874
+ where: {
875
+ id: props.asset.id !== undefined ? props.asset.id : undefined,
876
+ symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
877
+ name: props.asset.name !== undefined ? props.asset.name : undefined,
878
+ },
879
+ create: {
880
+ symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
881
+ name: props.asset.name !== undefined ? props.asset.name : undefined,
882
+ type: props.asset.type !== undefined ? props.asset.type : undefined,
883
+ logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
884
+ description: props.asset.description !== undefined ? props.asset.description : undefined,
885
+ cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
886
+ exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
887
+ currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
888
+ country: props.asset.country !== undefined ? props.asset.country : undefined,
889
+ sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
890
+ industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
891
+ address: props.asset.address !== undefined ? props.asset.address : undefined,
892
+ officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
893
+ fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
894
+ latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
895
+ marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
896
+ ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
897
+ peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
898
+ pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
899
+ bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
900
+ dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
901
+ dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
902
+ eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
903
+ revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
904
+ profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
905
+ operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
906
+ returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
907
+ returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
908
+ revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
909
+ grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
910
+ dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
911
+ quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
912
+ quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
913
+ analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
914
+ analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
915
+ analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
916
+ analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
917
+ analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
918
+ analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
919
+ trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
920
+ forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
921
+ priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
922
+ priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
923
+ evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
924
+ evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
925
+ beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
926
+ week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
927
+ week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
928
+ day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
929
+ day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
930
+ sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
931
+ dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
932
+ exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
933
+ askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
934
+ bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
935
+ },
936
+ }
937
+ } : undefined,
938
+ },
939
+ update: {
940
+ url: props.url !== undefined ? {
941
+ set: props.url
829
942
  } : undefined,
830
- },
831
- update: {
832
- url: props.url !== undefined ? {
833
- set: props.url
834
- } : undefined,
835
- relevancyScore: props.relevancyScore !== undefined ? {
836
- set: props.relevancyScore
837
- } : undefined,
838
- sentimentScore: props.sentimentScore !== undefined ? {
839
- set: props.sentimentScore
840
- } : undefined,
841
- sentimentLabel: props.sentimentLabel !== undefined ? {
842
- set: props.sentimentLabel
843
- } : undefined,
844
- news: props.news ?
845
- typeof props.news === 'object' && Object.keys(props.news).length === 1 && (Object.keys(props.news)[0] === 'id' || Object.keys(props.news)[0] === 'symbol')
846
- ? {
847
- connect: {
848
- id: props.news.id
849
- }
850
- } : { upsert: {
851
- where: {
852
- id: props.news.id !== undefined ? {
853
- equals: props.news.id
854
- } : undefined,
855
- title: props.news.title !== undefined ? {
856
- equals: props.news.title
857
- } : undefined,
858
- url: props.news.url !== undefined ? {
859
- equals: props.news.url
860
- } : undefined,
861
- },
862
- update: {
863
- id: props.news.id !== undefined ? {
864
- set: props.news.id
865
- } : undefined,
866
- title: props.news.title !== undefined ? {
867
- set: props.news.title
868
- } : undefined,
869
- content: props.news.content !== undefined ? {
870
- set: props.news.content
871
- } : undefined,
872
- source: props.news.source !== undefined ? {
873
- set: props.news.source
874
- } : undefined,
875
- sourceDomain: props.news.sourceDomain !== undefined ? {
876
- set: props.news.sourceDomain
877
- } : undefined,
878
- url: props.news.url !== undefined ? {
879
- set: props.news.url
880
- } : undefined,
881
- sentiment: props.news.sentiment !== undefined ? {
882
- set: props.news.sentiment
883
- } : undefined,
884
- authors: props.news.authors !== undefined ? {
885
- set: props.news.authors
886
- } : undefined,
887
- summary: props.news.summary !== undefined ? {
888
- set: props.news.summary
889
- } : undefined,
890
- bannerImage: props.news.bannerImage !== undefined ? {
891
- set: props.news.bannerImage
892
- } : undefined,
893
- timePublished: props.news.timePublished !== undefined ? {
894
- set: props.news.timePublished
895
- } : undefined,
896
- category: props.news.category !== undefined ? {
897
- set: props.news.category
898
- } : undefined,
899
- topics: props.news.topics !== undefined ? {
900
- set: props.news.topics
901
- } : undefined,
902
- logo: props.news.logo !== undefined ? {
903
- set: props.news.logo
904
- } : undefined,
905
- },
906
- create: {
907
- title: props.news.title !== undefined ? props.news.title : undefined,
908
- content: props.news.content !== undefined ? props.news.content : undefined,
909
- source: props.news.source !== undefined ? props.news.source : undefined,
910
- sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
911
- url: props.news.url !== undefined ? props.news.url : undefined,
912
- sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
913
- authors: props.news.authors !== undefined ? {
914
- set: props.news.authors
915
- } : undefined,
916
- summary: props.news.summary !== undefined ? props.news.summary : undefined,
917
- bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
918
- timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
919
- category: props.news.category !== undefined ? props.news.category : undefined,
920
- topics: props.news.topics !== undefined ? {
921
- set: props.news.topics
922
- } : undefined,
923
- logo: props.news.logo !== undefined ? props.news.logo : undefined,
924
- },
925
- }
926
- } : undefined,
927
- asset: props.asset ?
928
- typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && (Object.keys(props.asset)[0] === 'id' || Object.keys(props.asset)[0] === 'symbol')
929
- ? {
930
- connect: {
931
- id: props.asset.id
932
- }
933
- } : { upsert: {
934
- where: {
935
- id: props.asset.id !== undefined ? {
936
- equals: props.asset.id
937
- } : undefined,
938
- symbol: props.asset.symbol !== undefined ? {
939
- equals: props.asset.symbol
940
- } : undefined,
941
- name: props.asset.name !== undefined ? {
942
- equals: props.asset.name
943
- } : undefined,
944
- },
945
- update: {
946
- id: props.asset.id !== undefined ? {
947
- set: props.asset.id
948
- } : undefined,
949
- symbol: props.asset.symbol !== undefined ? {
950
- set: props.asset.symbol
951
- } : undefined,
952
- name: props.asset.name !== undefined ? {
953
- set: props.asset.name
954
- } : undefined,
955
- type: props.asset.type !== undefined ? {
956
- set: props.asset.type
957
- } : undefined,
958
- logoUrl: props.asset.logoUrl !== undefined ? {
959
- set: props.asset.logoUrl
960
- } : undefined,
961
- description: props.asset.description !== undefined ? {
962
- set: props.asset.description
963
- } : undefined,
964
- cik: props.asset.cik !== undefined ? {
965
- set: props.asset.cik
966
- } : undefined,
967
- exchange: props.asset.exchange !== undefined ? {
968
- set: props.asset.exchange
969
- } : undefined,
970
- currency: props.asset.currency !== undefined ? {
971
- set: props.asset.currency
972
- } : undefined,
973
- country: props.asset.country !== undefined ? {
974
- set: props.asset.country
975
- } : undefined,
976
- sector: props.asset.sector !== undefined ? {
977
- set: props.asset.sector
978
- } : undefined,
979
- industry: props.asset.industry !== undefined ? {
980
- set: props.asset.industry
981
- } : undefined,
982
- address: props.asset.address !== undefined ? {
983
- set: props.asset.address
984
- } : undefined,
985
- officialSite: props.asset.officialSite !== undefined ? {
986
- set: props.asset.officialSite
987
- } : undefined,
988
- fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? {
989
- set: props.asset.fiscalYearEnd
990
- } : undefined,
991
- latestQuarter: props.asset.latestQuarter !== undefined ? {
992
- set: props.asset.latestQuarter
993
- } : undefined,
994
- marketCapitalization: props.asset.marketCapitalization !== undefined ? {
995
- set: props.asset.marketCapitalization
996
- } : undefined,
997
- ebitda: props.asset.ebitda !== undefined ? {
998
- set: props.asset.ebitda
999
- } : undefined,
1000
- peRatio: props.asset.peRatio !== undefined ? {
1001
- set: props.asset.peRatio
1002
- } : undefined,
1003
- pegRatio: props.asset.pegRatio !== undefined ? {
1004
- set: props.asset.pegRatio
1005
- } : undefined,
1006
- bookValue: props.asset.bookValue !== undefined ? {
1007
- set: props.asset.bookValue
1008
- } : undefined,
1009
- dividendPerShare: props.asset.dividendPerShare !== undefined ? {
1010
- set: props.asset.dividendPerShare
1011
- } : undefined,
1012
- dividendYield: props.asset.dividendYield !== undefined ? {
1013
- set: props.asset.dividendYield
1014
- } : undefined,
1015
- eps: props.asset.eps !== undefined ? {
1016
- set: props.asset.eps
1017
- } : undefined,
1018
- revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? {
1019
- set: props.asset.revenuePerShareTTM
1020
- } : undefined,
1021
- profitMargin: props.asset.profitMargin !== undefined ? {
1022
- set: props.asset.profitMargin
1023
- } : undefined,
1024
- operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? {
1025
- set: props.asset.operatingMarginTTM
1026
- } : undefined,
1027
- returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? {
1028
- set: props.asset.returnOnAssetsTTM
1029
- } : undefined,
1030
- returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? {
1031
- set: props.asset.returnOnEquityTTM
1032
- } : undefined,
1033
- revenueTTM: props.asset.revenueTTM !== undefined ? {
1034
- set: props.asset.revenueTTM
1035
- } : undefined,
1036
- grossProfitTTM: props.asset.grossProfitTTM !== undefined ? {
1037
- set: props.asset.grossProfitTTM
1038
- } : undefined,
1039
- dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? {
1040
- set: props.asset.dilutedEPSTTM
1041
- } : undefined,
1042
- quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? {
1043
- set: props.asset.quarterlyEarningsGrowthYOY
1044
- } : undefined,
1045
- quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? {
1046
- set: props.asset.quarterlyRevenueGrowthYOY
1047
- } : undefined,
1048
- analystTargetPrice: props.asset.analystTargetPrice !== undefined ? {
1049
- set: props.asset.analystTargetPrice
1050
- } : undefined,
1051
- analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? {
1052
- set: props.asset.analystRatingStrongBuy
1053
- } : undefined,
1054
- analystRatingBuy: props.asset.analystRatingBuy !== undefined ? {
1055
- set: props.asset.analystRatingBuy
1056
- } : undefined,
1057
- analystRatingHold: props.asset.analystRatingHold !== undefined ? {
1058
- set: props.asset.analystRatingHold
1059
- } : undefined,
1060
- analystRatingSell: props.asset.analystRatingSell !== undefined ? {
1061
- set: props.asset.analystRatingSell
1062
- } : undefined,
1063
- analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? {
1064
- set: props.asset.analystRatingStrongSell
1065
- } : undefined,
1066
- trailingPE: props.asset.trailingPE !== undefined ? {
1067
- set: props.asset.trailingPE
1068
- } : undefined,
1069
- forwardPE: props.asset.forwardPE !== undefined ? {
1070
- set: props.asset.forwardPE
1071
- } : undefined,
1072
- priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? {
1073
- set: props.asset.priceToSalesRatioTTM
1074
- } : undefined,
1075
- priceToBookRatio: props.asset.priceToBookRatio !== undefined ? {
1076
- set: props.asset.priceToBookRatio
1077
- } : undefined,
1078
- evToRevenue: props.asset.evToRevenue !== undefined ? {
1079
- set: props.asset.evToRevenue
1080
- } : undefined,
1081
- evToEbitda: props.asset.evToEbitda !== undefined ? {
1082
- set: props.asset.evToEbitda
1083
- } : undefined,
1084
- beta: props.asset.beta !== undefined ? {
1085
- set: props.asset.beta
1086
- } : undefined,
1087
- week52High: props.asset.week52High !== undefined ? {
1088
- set: props.asset.week52High
1089
- } : undefined,
1090
- week52Low: props.asset.week52Low !== undefined ? {
1091
- set: props.asset.week52Low
1092
- } : undefined,
1093
- day50MovingAverage: props.asset.day50MovingAverage !== undefined ? {
1094
- set: props.asset.day50MovingAverage
1095
- } : undefined,
1096
- day200MovingAverage: props.asset.day200MovingAverage !== undefined ? {
1097
- set: props.asset.day200MovingAverage
1098
- } : undefined,
1099
- sharesOutstanding: props.asset.sharesOutstanding !== undefined ? {
1100
- set: props.asset.sharesOutstanding
1101
- } : undefined,
1102
- dividendDate: props.asset.dividendDate !== undefined ? {
1103
- set: props.asset.dividendDate
1104
- } : undefined,
1105
- exDividendDate: props.asset.exDividendDate !== undefined ? {
1106
- set: props.asset.exDividendDate
1107
- } : undefined,
1108
- askPrice: props.asset.askPrice !== undefined ? {
1109
- set: props.asset.askPrice
1110
- } : undefined,
1111
- bidPrice: props.asset.bidPrice !== undefined ? {
1112
- set: props.asset.bidPrice
1113
- } : undefined,
1114
- },
1115
- create: {
1116
- symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
1117
- name: props.asset.name !== undefined ? props.asset.name : undefined,
1118
- type: props.asset.type !== undefined ? props.asset.type : undefined,
1119
- logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
1120
- description: props.asset.description !== undefined ? props.asset.description : undefined,
1121
- cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
1122
- exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
1123
- currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
1124
- country: props.asset.country !== undefined ? props.asset.country : undefined,
1125
- sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
1126
- industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
1127
- address: props.asset.address !== undefined ? props.asset.address : undefined,
1128
- officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
1129
- fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
1130
- latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
1131
- marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
1132
- ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
1133
- peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
1134
- pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
1135
- bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
1136
- dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
1137
- dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
1138
- eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
1139
- revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
1140
- profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
1141
- operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
1142
- returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
1143
- returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
1144
- revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
1145
- grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
1146
- dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
1147
- quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
1148
- quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
1149
- analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
1150
- analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
1151
- analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
1152
- analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
1153
- analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
1154
- analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
1155
- trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
1156
- forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
1157
- priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
1158
- priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
1159
- evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
1160
- evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
1161
- beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
1162
- week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
1163
- week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
1164
- day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
1165
- day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
1166
- sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
1167
- dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
1168
- exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
1169
- askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
1170
- bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
1171
- },
1172
- }
1173
- } : undefined,
1174
- },
1175
- };
1176
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1177
- try {
1178
- const response = await client.mutate({ mutation: UPSERT_ONE_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
1179
- if (response.errors && response.errors.length > 0)
1180
- throw new Error(response.errors[0].message);
1181
- if (response && response.data && response.data.upsertOneNewsArticleAssetSentiment) {
1182
- return response.data.upsertOneNewsArticleAssetSentiment;
943
+ relevancyScore: props.relevancyScore !== undefined ? {
944
+ set: props.relevancyScore
945
+ } : undefined,
946
+ sentimentScore: props.sentimentScore !== undefined ? {
947
+ set: props.sentimentScore
948
+ } : undefined,
949
+ sentimentLabel: props.sentimentLabel !== undefined ? {
950
+ set: props.sentimentLabel
951
+ } : undefined,
952
+ news: props.news ?
953
+ typeof props.news === 'object' && Object.keys(props.news).length === 1 && (Object.keys(props.news)[0] === 'id' || Object.keys(props.news)[0] === 'symbol')
954
+ ? {
955
+ connect: {
956
+ id: props.news.id
957
+ }
958
+ } : { upsert: {
959
+ where: {
960
+ id: props.news.id !== undefined ? {
961
+ equals: props.news.id
962
+ } : undefined,
963
+ title: props.news.title !== undefined ? {
964
+ equals: props.news.title
965
+ } : undefined,
966
+ url: props.news.url !== undefined ? {
967
+ equals: props.news.url
968
+ } : undefined,
969
+ },
970
+ update: {
971
+ id: props.news.id !== undefined ? {
972
+ set: props.news.id
973
+ } : undefined,
974
+ title: props.news.title !== undefined ? {
975
+ set: props.news.title
976
+ } : undefined,
977
+ content: props.news.content !== undefined ? {
978
+ set: props.news.content
979
+ } : undefined,
980
+ source: props.news.source !== undefined ? {
981
+ set: props.news.source
982
+ } : undefined,
983
+ sourceDomain: props.news.sourceDomain !== undefined ? {
984
+ set: props.news.sourceDomain
985
+ } : undefined,
986
+ url: props.news.url !== undefined ? {
987
+ set: props.news.url
988
+ } : undefined,
989
+ sentiment: props.news.sentiment !== undefined ? {
990
+ set: props.news.sentiment
991
+ } : undefined,
992
+ authors: props.news.authors !== undefined ? {
993
+ set: props.news.authors
994
+ } : undefined,
995
+ summary: props.news.summary !== undefined ? {
996
+ set: props.news.summary
997
+ } : undefined,
998
+ bannerImage: props.news.bannerImage !== undefined ? {
999
+ set: props.news.bannerImage
1000
+ } : undefined,
1001
+ timePublished: props.news.timePublished !== undefined ? {
1002
+ set: props.news.timePublished
1003
+ } : undefined,
1004
+ category: props.news.category !== undefined ? {
1005
+ set: props.news.category
1006
+ } : undefined,
1007
+ topics: props.news.topics !== undefined ? {
1008
+ set: props.news.topics
1009
+ } : undefined,
1010
+ logo: props.news.logo !== undefined ? {
1011
+ set: props.news.logo
1012
+ } : undefined,
1013
+ },
1014
+ create: {
1015
+ title: props.news.title !== undefined ? props.news.title : undefined,
1016
+ content: props.news.content !== undefined ? props.news.content : undefined,
1017
+ source: props.news.source !== undefined ? props.news.source : undefined,
1018
+ sourceDomain: props.news.sourceDomain !== undefined ? props.news.sourceDomain : undefined,
1019
+ url: props.news.url !== undefined ? props.news.url : undefined,
1020
+ sentiment: props.news.sentiment !== undefined ? props.news.sentiment : undefined,
1021
+ authors: props.news.authors !== undefined ? {
1022
+ set: props.news.authors
1023
+ } : undefined,
1024
+ summary: props.news.summary !== undefined ? props.news.summary : undefined,
1025
+ bannerImage: props.news.bannerImage !== undefined ? props.news.bannerImage : undefined,
1026
+ timePublished: props.news.timePublished !== undefined ? props.news.timePublished : undefined,
1027
+ category: props.news.category !== undefined ? props.news.category : undefined,
1028
+ topics: props.news.topics !== undefined ? {
1029
+ set: props.news.topics
1030
+ } : undefined,
1031
+ logo: props.news.logo !== undefined ? props.news.logo : undefined,
1032
+ },
1033
+ }
1034
+ } : undefined,
1035
+ asset: props.asset ?
1036
+ typeof props.asset === 'object' && Object.keys(props.asset).length === 1 && (Object.keys(props.asset)[0] === 'id' || Object.keys(props.asset)[0] === 'symbol')
1037
+ ? {
1038
+ connect: {
1039
+ id: props.asset.id
1040
+ }
1041
+ } : { upsert: {
1042
+ where: {
1043
+ id: props.asset.id !== undefined ? {
1044
+ equals: props.asset.id
1045
+ } : undefined,
1046
+ symbol: props.asset.symbol !== undefined ? {
1047
+ equals: props.asset.symbol
1048
+ } : undefined,
1049
+ name: props.asset.name !== undefined ? {
1050
+ equals: props.asset.name
1051
+ } : undefined,
1052
+ },
1053
+ update: {
1054
+ id: props.asset.id !== undefined ? {
1055
+ set: props.asset.id
1056
+ } : undefined,
1057
+ symbol: props.asset.symbol !== undefined ? {
1058
+ set: props.asset.symbol
1059
+ } : undefined,
1060
+ name: props.asset.name !== undefined ? {
1061
+ set: props.asset.name
1062
+ } : undefined,
1063
+ type: props.asset.type !== undefined ? {
1064
+ set: props.asset.type
1065
+ } : undefined,
1066
+ logoUrl: props.asset.logoUrl !== undefined ? {
1067
+ set: props.asset.logoUrl
1068
+ } : undefined,
1069
+ description: props.asset.description !== undefined ? {
1070
+ set: props.asset.description
1071
+ } : undefined,
1072
+ cik: props.asset.cik !== undefined ? {
1073
+ set: props.asset.cik
1074
+ } : undefined,
1075
+ exchange: props.asset.exchange !== undefined ? {
1076
+ set: props.asset.exchange
1077
+ } : undefined,
1078
+ currency: props.asset.currency !== undefined ? {
1079
+ set: props.asset.currency
1080
+ } : undefined,
1081
+ country: props.asset.country !== undefined ? {
1082
+ set: props.asset.country
1083
+ } : undefined,
1084
+ sector: props.asset.sector !== undefined ? {
1085
+ set: props.asset.sector
1086
+ } : undefined,
1087
+ industry: props.asset.industry !== undefined ? {
1088
+ set: props.asset.industry
1089
+ } : undefined,
1090
+ address: props.asset.address !== undefined ? {
1091
+ set: props.asset.address
1092
+ } : undefined,
1093
+ officialSite: props.asset.officialSite !== undefined ? {
1094
+ set: props.asset.officialSite
1095
+ } : undefined,
1096
+ fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? {
1097
+ set: props.asset.fiscalYearEnd
1098
+ } : undefined,
1099
+ latestQuarter: props.asset.latestQuarter !== undefined ? {
1100
+ set: props.asset.latestQuarter
1101
+ } : undefined,
1102
+ marketCapitalization: props.asset.marketCapitalization !== undefined ? {
1103
+ set: props.asset.marketCapitalization
1104
+ } : undefined,
1105
+ ebitda: props.asset.ebitda !== undefined ? {
1106
+ set: props.asset.ebitda
1107
+ } : undefined,
1108
+ peRatio: props.asset.peRatio !== undefined ? {
1109
+ set: props.asset.peRatio
1110
+ } : undefined,
1111
+ pegRatio: props.asset.pegRatio !== undefined ? {
1112
+ set: props.asset.pegRatio
1113
+ } : undefined,
1114
+ bookValue: props.asset.bookValue !== undefined ? {
1115
+ set: props.asset.bookValue
1116
+ } : undefined,
1117
+ dividendPerShare: props.asset.dividendPerShare !== undefined ? {
1118
+ set: props.asset.dividendPerShare
1119
+ } : undefined,
1120
+ dividendYield: props.asset.dividendYield !== undefined ? {
1121
+ set: props.asset.dividendYield
1122
+ } : undefined,
1123
+ eps: props.asset.eps !== undefined ? {
1124
+ set: props.asset.eps
1125
+ } : undefined,
1126
+ revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? {
1127
+ set: props.asset.revenuePerShareTTM
1128
+ } : undefined,
1129
+ profitMargin: props.asset.profitMargin !== undefined ? {
1130
+ set: props.asset.profitMargin
1131
+ } : undefined,
1132
+ operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? {
1133
+ set: props.asset.operatingMarginTTM
1134
+ } : undefined,
1135
+ returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? {
1136
+ set: props.asset.returnOnAssetsTTM
1137
+ } : undefined,
1138
+ returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? {
1139
+ set: props.asset.returnOnEquityTTM
1140
+ } : undefined,
1141
+ revenueTTM: props.asset.revenueTTM !== undefined ? {
1142
+ set: props.asset.revenueTTM
1143
+ } : undefined,
1144
+ grossProfitTTM: props.asset.grossProfitTTM !== undefined ? {
1145
+ set: props.asset.grossProfitTTM
1146
+ } : undefined,
1147
+ dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? {
1148
+ set: props.asset.dilutedEPSTTM
1149
+ } : undefined,
1150
+ quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? {
1151
+ set: props.asset.quarterlyEarningsGrowthYOY
1152
+ } : undefined,
1153
+ quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? {
1154
+ set: props.asset.quarterlyRevenueGrowthYOY
1155
+ } : undefined,
1156
+ analystTargetPrice: props.asset.analystTargetPrice !== undefined ? {
1157
+ set: props.asset.analystTargetPrice
1158
+ } : undefined,
1159
+ analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? {
1160
+ set: props.asset.analystRatingStrongBuy
1161
+ } : undefined,
1162
+ analystRatingBuy: props.asset.analystRatingBuy !== undefined ? {
1163
+ set: props.asset.analystRatingBuy
1164
+ } : undefined,
1165
+ analystRatingHold: props.asset.analystRatingHold !== undefined ? {
1166
+ set: props.asset.analystRatingHold
1167
+ } : undefined,
1168
+ analystRatingSell: props.asset.analystRatingSell !== undefined ? {
1169
+ set: props.asset.analystRatingSell
1170
+ } : undefined,
1171
+ analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? {
1172
+ set: props.asset.analystRatingStrongSell
1173
+ } : undefined,
1174
+ trailingPE: props.asset.trailingPE !== undefined ? {
1175
+ set: props.asset.trailingPE
1176
+ } : undefined,
1177
+ forwardPE: props.asset.forwardPE !== undefined ? {
1178
+ set: props.asset.forwardPE
1179
+ } : undefined,
1180
+ priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? {
1181
+ set: props.asset.priceToSalesRatioTTM
1182
+ } : undefined,
1183
+ priceToBookRatio: props.asset.priceToBookRatio !== undefined ? {
1184
+ set: props.asset.priceToBookRatio
1185
+ } : undefined,
1186
+ evToRevenue: props.asset.evToRevenue !== undefined ? {
1187
+ set: props.asset.evToRevenue
1188
+ } : undefined,
1189
+ evToEbitda: props.asset.evToEbitda !== undefined ? {
1190
+ set: props.asset.evToEbitda
1191
+ } : undefined,
1192
+ beta: props.asset.beta !== undefined ? {
1193
+ set: props.asset.beta
1194
+ } : undefined,
1195
+ week52High: props.asset.week52High !== undefined ? {
1196
+ set: props.asset.week52High
1197
+ } : undefined,
1198
+ week52Low: props.asset.week52Low !== undefined ? {
1199
+ set: props.asset.week52Low
1200
+ } : undefined,
1201
+ day50MovingAverage: props.asset.day50MovingAverage !== undefined ? {
1202
+ set: props.asset.day50MovingAverage
1203
+ } : undefined,
1204
+ day200MovingAverage: props.asset.day200MovingAverage !== undefined ? {
1205
+ set: props.asset.day200MovingAverage
1206
+ } : undefined,
1207
+ sharesOutstanding: props.asset.sharesOutstanding !== undefined ? {
1208
+ set: props.asset.sharesOutstanding
1209
+ } : undefined,
1210
+ dividendDate: props.asset.dividendDate !== undefined ? {
1211
+ set: props.asset.dividendDate
1212
+ } : undefined,
1213
+ exDividendDate: props.asset.exDividendDate !== undefined ? {
1214
+ set: props.asset.exDividendDate
1215
+ } : undefined,
1216
+ askPrice: props.asset.askPrice !== undefined ? {
1217
+ set: props.asset.askPrice
1218
+ } : undefined,
1219
+ bidPrice: props.asset.bidPrice !== undefined ? {
1220
+ set: props.asset.bidPrice
1221
+ } : undefined,
1222
+ },
1223
+ create: {
1224
+ symbol: props.asset.symbol !== undefined ? props.asset.symbol : undefined,
1225
+ name: props.asset.name !== undefined ? props.asset.name : undefined,
1226
+ type: props.asset.type !== undefined ? props.asset.type : undefined,
1227
+ logoUrl: props.asset.logoUrl !== undefined ? props.asset.logoUrl : undefined,
1228
+ description: props.asset.description !== undefined ? props.asset.description : undefined,
1229
+ cik: props.asset.cik !== undefined ? props.asset.cik : undefined,
1230
+ exchange: props.asset.exchange !== undefined ? props.asset.exchange : undefined,
1231
+ currency: props.asset.currency !== undefined ? props.asset.currency : undefined,
1232
+ country: props.asset.country !== undefined ? props.asset.country : undefined,
1233
+ sector: props.asset.sector !== undefined ? props.asset.sector : undefined,
1234
+ industry: props.asset.industry !== undefined ? props.asset.industry : undefined,
1235
+ address: props.asset.address !== undefined ? props.asset.address : undefined,
1236
+ officialSite: props.asset.officialSite !== undefined ? props.asset.officialSite : undefined,
1237
+ fiscalYearEnd: props.asset.fiscalYearEnd !== undefined ? props.asset.fiscalYearEnd : undefined,
1238
+ latestQuarter: props.asset.latestQuarter !== undefined ? props.asset.latestQuarter : undefined,
1239
+ marketCapitalization: props.asset.marketCapitalization !== undefined ? props.asset.marketCapitalization : undefined,
1240
+ ebitda: props.asset.ebitda !== undefined ? props.asset.ebitda : undefined,
1241
+ peRatio: props.asset.peRatio !== undefined ? props.asset.peRatio : undefined,
1242
+ pegRatio: props.asset.pegRatio !== undefined ? props.asset.pegRatio : undefined,
1243
+ bookValue: props.asset.bookValue !== undefined ? props.asset.bookValue : undefined,
1244
+ dividendPerShare: props.asset.dividendPerShare !== undefined ? props.asset.dividendPerShare : undefined,
1245
+ dividendYield: props.asset.dividendYield !== undefined ? props.asset.dividendYield : undefined,
1246
+ eps: props.asset.eps !== undefined ? props.asset.eps : undefined,
1247
+ revenuePerShareTTM: props.asset.revenuePerShareTTM !== undefined ? props.asset.revenuePerShareTTM : undefined,
1248
+ profitMargin: props.asset.profitMargin !== undefined ? props.asset.profitMargin : undefined,
1249
+ operatingMarginTTM: props.asset.operatingMarginTTM !== undefined ? props.asset.operatingMarginTTM : undefined,
1250
+ returnOnAssetsTTM: props.asset.returnOnAssetsTTM !== undefined ? props.asset.returnOnAssetsTTM : undefined,
1251
+ returnOnEquityTTM: props.asset.returnOnEquityTTM !== undefined ? props.asset.returnOnEquityTTM : undefined,
1252
+ revenueTTM: props.asset.revenueTTM !== undefined ? props.asset.revenueTTM : undefined,
1253
+ grossProfitTTM: props.asset.grossProfitTTM !== undefined ? props.asset.grossProfitTTM : undefined,
1254
+ dilutedEPSTTM: props.asset.dilutedEPSTTM !== undefined ? props.asset.dilutedEPSTTM : undefined,
1255
+ quarterlyEarningsGrowthYOY: props.asset.quarterlyEarningsGrowthYOY !== undefined ? props.asset.quarterlyEarningsGrowthYOY : undefined,
1256
+ quarterlyRevenueGrowthYOY: props.asset.quarterlyRevenueGrowthYOY !== undefined ? props.asset.quarterlyRevenueGrowthYOY : undefined,
1257
+ analystTargetPrice: props.asset.analystTargetPrice !== undefined ? props.asset.analystTargetPrice : undefined,
1258
+ analystRatingStrongBuy: props.asset.analystRatingStrongBuy !== undefined ? props.asset.analystRatingStrongBuy : undefined,
1259
+ analystRatingBuy: props.asset.analystRatingBuy !== undefined ? props.asset.analystRatingBuy : undefined,
1260
+ analystRatingHold: props.asset.analystRatingHold !== undefined ? props.asset.analystRatingHold : undefined,
1261
+ analystRatingSell: props.asset.analystRatingSell !== undefined ? props.asset.analystRatingSell : undefined,
1262
+ analystRatingStrongSell: props.asset.analystRatingStrongSell !== undefined ? props.asset.analystRatingStrongSell : undefined,
1263
+ trailingPE: props.asset.trailingPE !== undefined ? props.asset.trailingPE : undefined,
1264
+ forwardPE: props.asset.forwardPE !== undefined ? props.asset.forwardPE : undefined,
1265
+ priceToSalesRatioTTM: props.asset.priceToSalesRatioTTM !== undefined ? props.asset.priceToSalesRatioTTM : undefined,
1266
+ priceToBookRatio: props.asset.priceToBookRatio !== undefined ? props.asset.priceToBookRatio : undefined,
1267
+ evToRevenue: props.asset.evToRevenue !== undefined ? props.asset.evToRevenue : undefined,
1268
+ evToEbitda: props.asset.evToEbitda !== undefined ? props.asset.evToEbitda : undefined,
1269
+ beta: props.asset.beta !== undefined ? props.asset.beta : undefined,
1270
+ week52High: props.asset.week52High !== undefined ? props.asset.week52High : undefined,
1271
+ week52Low: props.asset.week52Low !== undefined ? props.asset.week52Low : undefined,
1272
+ day50MovingAverage: props.asset.day50MovingAverage !== undefined ? props.asset.day50MovingAverage : undefined,
1273
+ day200MovingAverage: props.asset.day200MovingAverage !== undefined ? props.asset.day200MovingAverage : undefined,
1274
+ sharesOutstanding: props.asset.sharesOutstanding !== undefined ? props.asset.sharesOutstanding : undefined,
1275
+ dividendDate: props.asset.dividendDate !== undefined ? props.asset.dividendDate : undefined,
1276
+ exDividendDate: props.asset.exDividendDate !== undefined ? props.asset.exDividendDate : undefined,
1277
+ askPrice: props.asset.askPrice !== undefined ? props.asset.askPrice : undefined,
1278
+ bidPrice: props.asset.bidPrice !== undefined ? props.asset.bidPrice : undefined,
1279
+ },
1280
+ }
1281
+ } : undefined,
1282
+ },
1283
+ };
1284
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1285
+ const response = await client.mutate({
1286
+ mutation: UPSERT_ONE_NEWSARTICLEASSETSENTIMENT,
1287
+ variables: filteredVariables,
1288
+ // Don't cache mutations, but ensure we're using the freshest context
1289
+ fetchPolicy: 'no-cache'
1290
+ });
1291
+ if (response.errors && response.errors.length > 0)
1292
+ throw new Error(response.errors[0].message);
1293
+ if (response && response.data && response.data.upsertOneNewsArticleAssetSentiment) {
1294
+ return response.data.upsertOneNewsArticleAssetSentiment;
1295
+ }
1296
+ else {
1297
+ return null;
1298
+ }
1183
1299
  }
1184
- else {
1185
- return null;
1300
+ catch (error) {
1301
+ lastError = error;
1302
+ // Check if this is a database connection error that we should retry
1303
+ const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
1304
+ ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
1305
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
1306
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
1307
+ (error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
1308
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
1309
+ retryCount++;
1310
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
1311
+ console.warn("Database connection error, retrying...");
1312
+ await new Promise(resolve => setTimeout(resolve, delay));
1313
+ continue;
1314
+ }
1315
+ // Log the error and rethrow
1316
+ console.error("Database error occurred:", error);
1317
+ throw error;
1186
1318
  }
1187
1319
  }
1188
- catch (error) {
1189
- console.error('Error in upsertOneNewsArticleAssetSentiment:', error);
1190
- throw error;
1191
- }
1320
+ // If we exhausted retries, throw the last error
1321
+ throw lastError;
1192
1322
  },
1193
1323
  /**
1194
1324
  * Update multiple NewsArticleAssetSentiment records.
1325
+ * Enhanced with connection resilience against Prisma connection errors.
1195
1326
  * @param props - Array of NewsArticleAssetSentiment objects for the updated records.
1196
1327
  * @param globalClient - Apollo Client instance.
1197
1328
  * @returns The count of created records or null.
1198
1329
  */
1199
1330
  async updateMany(props, globalClient) {
1200
- const [modules, client] = await Promise.all([
1201
- (0, client_1.getApolloModules)(),
1202
- globalClient
1203
- ? Promise.resolve(globalClient)
1204
- : client_1.client
1205
- ]);
1206
- const { gql, ApolloError } = modules;
1207
- const UPDATE_MANY_NEWSARTICLEASSETSENTIMENT = gql `
1208
- mutation updateManyNewsArticleAssetSentiment($data: [NewsArticleAssetSentimentCreateManyInput!]!) {
1209
- updateManyNewsArticleAssetSentiment(data: $data) {
1210
- count
1211
- }
1212
- }`;
1213
- const variables = props.map(prop => ({
1214
- where: {
1215
- id: prop.id !== undefined ? prop.id : undefined,
1216
- url: prop.url !== undefined ? prop.url : undefined,
1217
- newsArticleId: prop.newsArticleId !== undefined ? {
1218
- equals: prop.newsArticleId
1219
- } : undefined,
1220
- },
1221
- data: {
1222
- id: prop.id !== undefined ? {
1223
- set: prop.id
1224
- } : undefined,
1225
- url: prop.url !== undefined ? {
1226
- set: prop.url
1227
- } : undefined,
1228
- relevancyScore: prop.relevancyScore !== undefined ? {
1229
- set: prop.relevancyScore
1230
- } : undefined,
1231
- sentimentScore: prop.sentimentScore !== undefined ? {
1232
- set: prop.sentimentScore
1233
- } : undefined,
1234
- sentimentLabel: prop.sentimentLabel !== undefined ? {
1235
- set: prop.sentimentLabel
1236
- } : undefined,
1237
- news: prop.news ?
1238
- typeof prop.news === 'object' && Object.keys(prop.news).length === 1 && (Object.keys(prop.news)[0] === 'id' || Object.keys(prop.news)[0] === 'symbol')
1239
- ? {
1240
- connect: {
1241
- id: prop.news.id
1242
- }
1243
- } : { upsert: {
1244
- where: {
1245
- id: prop.news.id !== undefined ? {
1246
- equals: prop.news.id
1247
- } : undefined,
1248
- title: prop.news.title !== undefined ? {
1249
- equals: prop.news.title
1250
- } : undefined,
1251
- url: prop.news.url !== undefined ? {
1252
- equals: prop.news.url
1253
- } : undefined,
1254
- },
1255
- update: {
1256
- id: prop.news.id !== undefined ? {
1257
- set: prop.news.id
1258
- } : undefined,
1259
- title: prop.news.title !== undefined ? {
1260
- set: prop.news.title
1261
- } : undefined,
1262
- content: prop.news.content !== undefined ? {
1263
- set: prop.news.content
1264
- } : undefined,
1265
- source: prop.news.source !== undefined ? {
1266
- set: prop.news.source
1267
- } : undefined,
1268
- sourceDomain: prop.news.sourceDomain !== undefined ? {
1269
- set: prop.news.sourceDomain
1270
- } : undefined,
1271
- url: prop.news.url !== undefined ? {
1272
- set: prop.news.url
1273
- } : undefined,
1274
- sentiment: prop.news.sentiment !== undefined ? {
1275
- set: prop.news.sentiment
1276
- } : undefined,
1277
- authors: prop.news.authors !== undefined ? {
1278
- set: prop.news.authors
1279
- } : undefined,
1280
- summary: prop.news.summary !== undefined ? {
1281
- set: prop.news.summary
1282
- } : undefined,
1283
- bannerImage: prop.news.bannerImage !== undefined ? {
1284
- set: prop.news.bannerImage
1285
- } : undefined,
1286
- timePublished: prop.news.timePublished !== undefined ? {
1287
- set: prop.news.timePublished
1288
- } : undefined,
1289
- category: prop.news.category !== undefined ? {
1290
- set: prop.news.category
1291
- } : undefined,
1292
- topics: prop.news.topics !== undefined ? {
1293
- set: prop.news.topics
1294
- } : undefined,
1295
- logo: prop.news.logo !== undefined ? {
1296
- set: prop.news.logo
1297
- } : undefined,
1298
- },
1299
- create: {
1300
- title: prop.news.title !== undefined ? prop.news.title : undefined,
1301
- content: prop.news.content !== undefined ? prop.news.content : undefined,
1302
- source: prop.news.source !== undefined ? prop.news.source : undefined,
1303
- sourceDomain: prop.news.sourceDomain !== undefined ? prop.news.sourceDomain : undefined,
1304
- url: prop.news.url !== undefined ? prop.news.url : undefined,
1305
- sentiment: prop.news.sentiment !== undefined ? prop.news.sentiment : undefined,
1306
- authors: prop.news.authors !== undefined ? {
1307
- set: prop.news.authors
1308
- } : undefined,
1309
- summary: prop.news.summary !== undefined ? prop.news.summary : undefined,
1310
- bannerImage: prop.news.bannerImage !== undefined ? prop.news.bannerImage : undefined,
1311
- timePublished: prop.news.timePublished !== undefined ? prop.news.timePublished : undefined,
1312
- category: prop.news.category !== undefined ? prop.news.category : undefined,
1313
- topics: prop.news.topics !== undefined ? {
1314
- set: prop.news.topics
1315
- } : undefined,
1316
- logo: prop.news.logo !== undefined ? prop.news.logo : undefined,
1317
- },
1318
- }
1319
- } : undefined,
1320
- asset: prop.asset ?
1321
- typeof prop.asset === 'object' && Object.keys(prop.asset).length === 1 && (Object.keys(prop.asset)[0] === 'id' || Object.keys(prop.asset)[0] === 'symbol')
1322
- ? {
1323
- connect: {
1324
- id: prop.asset.id
1325
- }
1326
- } : { upsert: {
1327
- where: {
1328
- id: prop.asset.id !== undefined ? {
1329
- equals: prop.asset.id
1330
- } : undefined,
1331
- symbol: prop.asset.symbol !== undefined ? {
1332
- equals: prop.asset.symbol
1333
- } : undefined,
1334
- name: prop.asset.name !== undefined ? {
1335
- equals: prop.asset.name
1336
- } : undefined,
1337
- },
1338
- update: {
1339
- id: prop.asset.id !== undefined ? {
1340
- set: prop.asset.id
1341
- } : undefined,
1342
- symbol: prop.asset.symbol !== undefined ? {
1343
- set: prop.asset.symbol
1344
- } : undefined,
1345
- name: prop.asset.name !== undefined ? {
1346
- set: prop.asset.name
1347
- } : undefined,
1348
- type: prop.asset.type !== undefined ? {
1349
- set: prop.asset.type
1350
- } : undefined,
1351
- logoUrl: prop.asset.logoUrl !== undefined ? {
1352
- set: prop.asset.logoUrl
1353
- } : undefined,
1354
- description: prop.asset.description !== undefined ? {
1355
- set: prop.asset.description
1356
- } : undefined,
1357
- cik: prop.asset.cik !== undefined ? {
1358
- set: prop.asset.cik
1359
- } : undefined,
1360
- exchange: prop.asset.exchange !== undefined ? {
1361
- set: prop.asset.exchange
1362
- } : undefined,
1363
- currency: prop.asset.currency !== undefined ? {
1364
- set: prop.asset.currency
1365
- } : undefined,
1366
- country: prop.asset.country !== undefined ? {
1367
- set: prop.asset.country
1368
- } : undefined,
1369
- sector: prop.asset.sector !== undefined ? {
1370
- set: prop.asset.sector
1371
- } : undefined,
1372
- industry: prop.asset.industry !== undefined ? {
1373
- set: prop.asset.industry
1374
- } : undefined,
1375
- address: prop.asset.address !== undefined ? {
1376
- set: prop.asset.address
1377
- } : undefined,
1378
- officialSite: prop.asset.officialSite !== undefined ? {
1379
- set: prop.asset.officialSite
1380
- } : undefined,
1381
- fiscalYearEnd: prop.asset.fiscalYearEnd !== undefined ? {
1382
- set: prop.asset.fiscalYearEnd
1383
- } : undefined,
1384
- latestQuarter: prop.asset.latestQuarter !== undefined ? {
1385
- set: prop.asset.latestQuarter
1386
- } : undefined,
1387
- marketCapitalization: prop.asset.marketCapitalization !== undefined ? {
1388
- set: prop.asset.marketCapitalization
1389
- } : undefined,
1390
- ebitda: prop.asset.ebitda !== undefined ? {
1391
- set: prop.asset.ebitda
1392
- } : undefined,
1393
- peRatio: prop.asset.peRatio !== undefined ? {
1394
- set: prop.asset.peRatio
1395
- } : undefined,
1396
- pegRatio: prop.asset.pegRatio !== undefined ? {
1397
- set: prop.asset.pegRatio
1398
- } : undefined,
1399
- bookValue: prop.asset.bookValue !== undefined ? {
1400
- set: prop.asset.bookValue
1401
- } : undefined,
1402
- dividendPerShare: prop.asset.dividendPerShare !== undefined ? {
1403
- set: prop.asset.dividendPerShare
1404
- } : undefined,
1405
- dividendYield: prop.asset.dividendYield !== undefined ? {
1406
- set: prop.asset.dividendYield
1407
- } : undefined,
1408
- eps: prop.asset.eps !== undefined ? {
1409
- set: prop.asset.eps
1410
- } : undefined,
1411
- revenuePerShareTTM: prop.asset.revenuePerShareTTM !== undefined ? {
1412
- set: prop.asset.revenuePerShareTTM
1413
- } : undefined,
1414
- profitMargin: prop.asset.profitMargin !== undefined ? {
1415
- set: prop.asset.profitMargin
1416
- } : undefined,
1417
- operatingMarginTTM: prop.asset.operatingMarginTTM !== undefined ? {
1418
- set: prop.asset.operatingMarginTTM
1419
- } : undefined,
1420
- returnOnAssetsTTM: prop.asset.returnOnAssetsTTM !== undefined ? {
1421
- set: prop.asset.returnOnAssetsTTM
1422
- } : undefined,
1423
- returnOnEquityTTM: prop.asset.returnOnEquityTTM !== undefined ? {
1424
- set: prop.asset.returnOnEquityTTM
1425
- } : undefined,
1426
- revenueTTM: prop.asset.revenueTTM !== undefined ? {
1427
- set: prop.asset.revenueTTM
1428
- } : undefined,
1429
- grossProfitTTM: prop.asset.grossProfitTTM !== undefined ? {
1430
- set: prop.asset.grossProfitTTM
1431
- } : undefined,
1432
- dilutedEPSTTM: prop.asset.dilutedEPSTTM !== undefined ? {
1433
- set: prop.asset.dilutedEPSTTM
1434
- } : undefined,
1435
- quarterlyEarningsGrowthYOY: prop.asset.quarterlyEarningsGrowthYOY !== undefined ? {
1436
- set: prop.asset.quarterlyEarningsGrowthYOY
1437
- } : undefined,
1438
- quarterlyRevenueGrowthYOY: prop.asset.quarterlyRevenueGrowthYOY !== undefined ? {
1439
- set: prop.asset.quarterlyRevenueGrowthYOY
1440
- } : undefined,
1441
- analystTargetPrice: prop.asset.analystTargetPrice !== undefined ? {
1442
- set: prop.asset.analystTargetPrice
1443
- } : undefined,
1444
- analystRatingStrongBuy: prop.asset.analystRatingStrongBuy !== undefined ? {
1445
- set: prop.asset.analystRatingStrongBuy
1446
- } : undefined,
1447
- analystRatingBuy: prop.asset.analystRatingBuy !== undefined ? {
1448
- set: prop.asset.analystRatingBuy
1449
- } : undefined,
1450
- analystRatingHold: prop.asset.analystRatingHold !== undefined ? {
1451
- set: prop.asset.analystRatingHold
1452
- } : undefined,
1453
- analystRatingSell: prop.asset.analystRatingSell !== undefined ? {
1454
- set: prop.asset.analystRatingSell
1455
- } : undefined,
1456
- analystRatingStrongSell: prop.asset.analystRatingStrongSell !== undefined ? {
1457
- set: prop.asset.analystRatingStrongSell
1458
- } : undefined,
1459
- trailingPE: prop.asset.trailingPE !== undefined ? {
1460
- set: prop.asset.trailingPE
1461
- } : undefined,
1462
- forwardPE: prop.asset.forwardPE !== undefined ? {
1463
- set: prop.asset.forwardPE
1464
- } : undefined,
1465
- priceToSalesRatioTTM: prop.asset.priceToSalesRatioTTM !== undefined ? {
1466
- set: prop.asset.priceToSalesRatioTTM
1467
- } : undefined,
1468
- priceToBookRatio: prop.asset.priceToBookRatio !== undefined ? {
1469
- set: prop.asset.priceToBookRatio
1470
- } : undefined,
1471
- evToRevenue: prop.asset.evToRevenue !== undefined ? {
1472
- set: prop.asset.evToRevenue
1473
- } : undefined,
1474
- evToEbitda: prop.asset.evToEbitda !== undefined ? {
1475
- set: prop.asset.evToEbitda
1476
- } : undefined,
1477
- beta: prop.asset.beta !== undefined ? {
1478
- set: prop.asset.beta
1479
- } : undefined,
1480
- week52High: prop.asset.week52High !== undefined ? {
1481
- set: prop.asset.week52High
1482
- } : undefined,
1483
- week52Low: prop.asset.week52Low !== undefined ? {
1484
- set: prop.asset.week52Low
1485
- } : undefined,
1486
- day50MovingAverage: prop.asset.day50MovingAverage !== undefined ? {
1487
- set: prop.asset.day50MovingAverage
1488
- } : undefined,
1489
- day200MovingAverage: prop.asset.day200MovingAverage !== undefined ? {
1490
- set: prop.asset.day200MovingAverage
1491
- } : undefined,
1492
- sharesOutstanding: prop.asset.sharesOutstanding !== undefined ? {
1493
- set: prop.asset.sharesOutstanding
1494
- } : undefined,
1495
- dividendDate: prop.asset.dividendDate !== undefined ? {
1496
- set: prop.asset.dividendDate
1497
- } : undefined,
1498
- exDividendDate: prop.asset.exDividendDate !== undefined ? {
1499
- set: prop.asset.exDividendDate
1500
- } : undefined,
1501
- askPrice: prop.asset.askPrice !== undefined ? {
1502
- set: prop.asset.askPrice
1503
- } : undefined,
1504
- bidPrice: prop.asset.bidPrice !== undefined ? {
1505
- set: prop.asset.bidPrice
1506
- } : undefined,
1507
- },
1508
- create: {
1509
- symbol: prop.asset.symbol !== undefined ? prop.asset.symbol : undefined,
1510
- name: prop.asset.name !== undefined ? prop.asset.name : undefined,
1511
- type: prop.asset.type !== undefined ? prop.asset.type : undefined,
1512
- logoUrl: prop.asset.logoUrl !== undefined ? prop.asset.logoUrl : undefined,
1513
- description: prop.asset.description !== undefined ? prop.asset.description : undefined,
1514
- cik: prop.asset.cik !== undefined ? prop.asset.cik : undefined,
1515
- exchange: prop.asset.exchange !== undefined ? prop.asset.exchange : undefined,
1516
- currency: prop.asset.currency !== undefined ? prop.asset.currency : undefined,
1517
- country: prop.asset.country !== undefined ? prop.asset.country : undefined,
1518
- sector: prop.asset.sector !== undefined ? prop.asset.sector : undefined,
1519
- industry: prop.asset.industry !== undefined ? prop.asset.industry : undefined,
1520
- address: prop.asset.address !== undefined ? prop.asset.address : undefined,
1521
- officialSite: prop.asset.officialSite !== undefined ? prop.asset.officialSite : undefined,
1522
- fiscalYearEnd: prop.asset.fiscalYearEnd !== undefined ? prop.asset.fiscalYearEnd : undefined,
1523
- latestQuarter: prop.asset.latestQuarter !== undefined ? prop.asset.latestQuarter : undefined,
1524
- marketCapitalization: prop.asset.marketCapitalization !== undefined ? prop.asset.marketCapitalization : undefined,
1525
- ebitda: prop.asset.ebitda !== undefined ? prop.asset.ebitda : undefined,
1526
- peRatio: prop.asset.peRatio !== undefined ? prop.asset.peRatio : undefined,
1527
- pegRatio: prop.asset.pegRatio !== undefined ? prop.asset.pegRatio : undefined,
1528
- bookValue: prop.asset.bookValue !== undefined ? prop.asset.bookValue : undefined,
1529
- dividendPerShare: prop.asset.dividendPerShare !== undefined ? prop.asset.dividendPerShare : undefined,
1530
- dividendYield: prop.asset.dividendYield !== undefined ? prop.asset.dividendYield : undefined,
1531
- eps: prop.asset.eps !== undefined ? prop.asset.eps : undefined,
1532
- revenuePerShareTTM: prop.asset.revenuePerShareTTM !== undefined ? prop.asset.revenuePerShareTTM : undefined,
1533
- profitMargin: prop.asset.profitMargin !== undefined ? prop.asset.profitMargin : undefined,
1534
- operatingMarginTTM: prop.asset.operatingMarginTTM !== undefined ? prop.asset.operatingMarginTTM : undefined,
1535
- returnOnAssetsTTM: prop.asset.returnOnAssetsTTM !== undefined ? prop.asset.returnOnAssetsTTM : undefined,
1536
- returnOnEquityTTM: prop.asset.returnOnEquityTTM !== undefined ? prop.asset.returnOnEquityTTM : undefined,
1537
- revenueTTM: prop.asset.revenueTTM !== undefined ? prop.asset.revenueTTM : undefined,
1538
- grossProfitTTM: prop.asset.grossProfitTTM !== undefined ? prop.asset.grossProfitTTM : undefined,
1539
- dilutedEPSTTM: prop.asset.dilutedEPSTTM !== undefined ? prop.asset.dilutedEPSTTM : undefined,
1540
- quarterlyEarningsGrowthYOY: prop.asset.quarterlyEarningsGrowthYOY !== undefined ? prop.asset.quarterlyEarningsGrowthYOY : undefined,
1541
- quarterlyRevenueGrowthYOY: prop.asset.quarterlyRevenueGrowthYOY !== undefined ? prop.asset.quarterlyRevenueGrowthYOY : undefined,
1542
- analystTargetPrice: prop.asset.analystTargetPrice !== undefined ? prop.asset.analystTargetPrice : undefined,
1543
- analystRatingStrongBuy: prop.asset.analystRatingStrongBuy !== undefined ? prop.asset.analystRatingStrongBuy : undefined,
1544
- analystRatingBuy: prop.asset.analystRatingBuy !== undefined ? prop.asset.analystRatingBuy : undefined,
1545
- analystRatingHold: prop.asset.analystRatingHold !== undefined ? prop.asset.analystRatingHold : undefined,
1546
- analystRatingSell: prop.asset.analystRatingSell !== undefined ? prop.asset.analystRatingSell : undefined,
1547
- analystRatingStrongSell: prop.asset.analystRatingStrongSell !== undefined ? prop.asset.analystRatingStrongSell : undefined,
1548
- trailingPE: prop.asset.trailingPE !== undefined ? prop.asset.trailingPE : undefined,
1549
- forwardPE: prop.asset.forwardPE !== undefined ? prop.asset.forwardPE : undefined,
1550
- priceToSalesRatioTTM: prop.asset.priceToSalesRatioTTM !== undefined ? prop.asset.priceToSalesRatioTTM : undefined,
1551
- priceToBookRatio: prop.asset.priceToBookRatio !== undefined ? prop.asset.priceToBookRatio : undefined,
1552
- evToRevenue: prop.asset.evToRevenue !== undefined ? prop.asset.evToRevenue : undefined,
1553
- evToEbitda: prop.asset.evToEbitda !== undefined ? prop.asset.evToEbitda : undefined,
1554
- beta: prop.asset.beta !== undefined ? prop.asset.beta : undefined,
1555
- week52High: prop.asset.week52High !== undefined ? prop.asset.week52High : undefined,
1556
- week52Low: prop.asset.week52Low !== undefined ? prop.asset.week52Low : undefined,
1557
- day50MovingAverage: prop.asset.day50MovingAverage !== undefined ? prop.asset.day50MovingAverage : undefined,
1558
- day200MovingAverage: prop.asset.day200MovingAverage !== undefined ? prop.asset.day200MovingAverage : undefined,
1559
- sharesOutstanding: prop.asset.sharesOutstanding !== undefined ? prop.asset.sharesOutstanding : undefined,
1560
- dividendDate: prop.asset.dividendDate !== undefined ? prop.asset.dividendDate : undefined,
1561
- exDividendDate: prop.asset.exDividendDate !== undefined ? prop.asset.exDividendDate : undefined,
1562
- askPrice: prop.asset.askPrice !== undefined ? prop.asset.askPrice : undefined,
1563
- bidPrice: prop.asset.bidPrice !== undefined ? prop.asset.bidPrice : undefined,
1564
- },
1565
- }
1566
- } : undefined,
1567
- },
1568
- }));
1569
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1570
- try {
1571
- const response = await client.mutate({ mutation: UPDATE_MANY_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
1572
- if (response.errors && response.errors.length > 0)
1573
- throw new Error(response.errors[0].message);
1574
- if (response && response.data && response.data.updateManyNewsArticleAssetSentiment) {
1575
- return response.data.updateManyNewsArticleAssetSentiment;
1331
+ var _a, _b, _c, _d, _e;
1332
+ // Maximum number of retries for database connection issues
1333
+ const MAX_RETRIES = 3;
1334
+ let retryCount = 0;
1335
+ let lastError = null;
1336
+ // Retry loop to handle potential database connection issues
1337
+ while (retryCount < MAX_RETRIES) {
1338
+ try {
1339
+ const [modules, client] = await Promise.all([
1340
+ (0, client_1.getApolloModules)(),
1341
+ globalClient
1342
+ ? Promise.resolve(globalClient)
1343
+ : client_1.client
1344
+ ]);
1345
+ const { gql, ApolloError } = modules;
1346
+ const UPDATE_MANY_NEWSARTICLEASSETSENTIMENT = gql `
1347
+ mutation updateManyNewsArticleAssetSentiment($data: [NewsArticleAssetSentimentCreateManyInput!]!) {
1348
+ updateManyNewsArticleAssetSentiment(data: $data) {
1349
+ count
1576
1350
  }
1577
- else {
1578
- return null;
1351
+ }`;
1352
+ const variables = props.map(prop => ({
1353
+ where: {
1354
+ id: prop.id !== undefined ? prop.id : undefined,
1355
+ url: prop.url !== undefined ? prop.url : undefined,
1356
+ newsArticleId: prop.newsArticleId !== undefined ? {
1357
+ equals: prop.newsArticleId
1358
+ } : undefined,
1359
+ },
1360
+ data: {
1361
+ id: prop.id !== undefined ? {
1362
+ set: prop.id
1363
+ } : undefined,
1364
+ url: prop.url !== undefined ? {
1365
+ set: prop.url
1366
+ } : undefined,
1367
+ relevancyScore: prop.relevancyScore !== undefined ? {
1368
+ set: prop.relevancyScore
1369
+ } : undefined,
1370
+ sentimentScore: prop.sentimentScore !== undefined ? {
1371
+ set: prop.sentimentScore
1372
+ } : undefined,
1373
+ sentimentLabel: prop.sentimentLabel !== undefined ? {
1374
+ set: prop.sentimentLabel
1375
+ } : undefined,
1376
+ news: prop.news ?
1377
+ typeof prop.news === 'object' && Object.keys(prop.news).length === 1 && (Object.keys(prop.news)[0] === 'id' || Object.keys(prop.news)[0] === 'symbol')
1378
+ ? {
1379
+ connect: {
1380
+ id: prop.news.id
1381
+ }
1382
+ } : { upsert: {
1383
+ where: {
1384
+ id: prop.news.id !== undefined ? {
1385
+ equals: prop.news.id
1386
+ } : undefined,
1387
+ title: prop.news.title !== undefined ? {
1388
+ equals: prop.news.title
1389
+ } : undefined,
1390
+ url: prop.news.url !== undefined ? {
1391
+ equals: prop.news.url
1392
+ } : undefined,
1393
+ },
1394
+ update: {
1395
+ id: prop.news.id !== undefined ? {
1396
+ set: prop.news.id
1397
+ } : undefined,
1398
+ title: prop.news.title !== undefined ? {
1399
+ set: prop.news.title
1400
+ } : undefined,
1401
+ content: prop.news.content !== undefined ? {
1402
+ set: prop.news.content
1403
+ } : undefined,
1404
+ source: prop.news.source !== undefined ? {
1405
+ set: prop.news.source
1406
+ } : undefined,
1407
+ sourceDomain: prop.news.sourceDomain !== undefined ? {
1408
+ set: prop.news.sourceDomain
1409
+ } : undefined,
1410
+ url: prop.news.url !== undefined ? {
1411
+ set: prop.news.url
1412
+ } : undefined,
1413
+ sentiment: prop.news.sentiment !== undefined ? {
1414
+ set: prop.news.sentiment
1415
+ } : undefined,
1416
+ authors: prop.news.authors !== undefined ? {
1417
+ set: prop.news.authors
1418
+ } : undefined,
1419
+ summary: prop.news.summary !== undefined ? {
1420
+ set: prop.news.summary
1421
+ } : undefined,
1422
+ bannerImage: prop.news.bannerImage !== undefined ? {
1423
+ set: prop.news.bannerImage
1424
+ } : undefined,
1425
+ timePublished: prop.news.timePublished !== undefined ? {
1426
+ set: prop.news.timePublished
1427
+ } : undefined,
1428
+ category: prop.news.category !== undefined ? {
1429
+ set: prop.news.category
1430
+ } : undefined,
1431
+ topics: prop.news.topics !== undefined ? {
1432
+ set: prop.news.topics
1433
+ } : undefined,
1434
+ logo: prop.news.logo !== undefined ? {
1435
+ set: prop.news.logo
1436
+ } : undefined,
1437
+ },
1438
+ create: {
1439
+ title: prop.news.title !== undefined ? prop.news.title : undefined,
1440
+ content: prop.news.content !== undefined ? prop.news.content : undefined,
1441
+ source: prop.news.source !== undefined ? prop.news.source : undefined,
1442
+ sourceDomain: prop.news.sourceDomain !== undefined ? prop.news.sourceDomain : undefined,
1443
+ url: prop.news.url !== undefined ? prop.news.url : undefined,
1444
+ sentiment: prop.news.sentiment !== undefined ? prop.news.sentiment : undefined,
1445
+ authors: prop.news.authors !== undefined ? {
1446
+ set: prop.news.authors
1447
+ } : undefined,
1448
+ summary: prop.news.summary !== undefined ? prop.news.summary : undefined,
1449
+ bannerImage: prop.news.bannerImage !== undefined ? prop.news.bannerImage : undefined,
1450
+ timePublished: prop.news.timePublished !== undefined ? prop.news.timePublished : undefined,
1451
+ category: prop.news.category !== undefined ? prop.news.category : undefined,
1452
+ topics: prop.news.topics !== undefined ? {
1453
+ set: prop.news.topics
1454
+ } : undefined,
1455
+ logo: prop.news.logo !== undefined ? prop.news.logo : undefined,
1456
+ },
1457
+ }
1458
+ } : undefined,
1459
+ asset: prop.asset ?
1460
+ typeof prop.asset === 'object' && Object.keys(prop.asset).length === 1 && (Object.keys(prop.asset)[0] === 'id' || Object.keys(prop.asset)[0] === 'symbol')
1461
+ ? {
1462
+ connect: {
1463
+ id: prop.asset.id
1464
+ }
1465
+ } : { upsert: {
1466
+ where: {
1467
+ id: prop.asset.id !== undefined ? {
1468
+ equals: prop.asset.id
1469
+ } : undefined,
1470
+ symbol: prop.asset.symbol !== undefined ? {
1471
+ equals: prop.asset.symbol
1472
+ } : undefined,
1473
+ name: prop.asset.name !== undefined ? {
1474
+ equals: prop.asset.name
1475
+ } : undefined,
1476
+ },
1477
+ update: {
1478
+ id: prop.asset.id !== undefined ? {
1479
+ set: prop.asset.id
1480
+ } : undefined,
1481
+ symbol: prop.asset.symbol !== undefined ? {
1482
+ set: prop.asset.symbol
1483
+ } : undefined,
1484
+ name: prop.asset.name !== undefined ? {
1485
+ set: prop.asset.name
1486
+ } : undefined,
1487
+ type: prop.asset.type !== undefined ? {
1488
+ set: prop.asset.type
1489
+ } : undefined,
1490
+ logoUrl: prop.asset.logoUrl !== undefined ? {
1491
+ set: prop.asset.logoUrl
1492
+ } : undefined,
1493
+ description: prop.asset.description !== undefined ? {
1494
+ set: prop.asset.description
1495
+ } : undefined,
1496
+ cik: prop.asset.cik !== undefined ? {
1497
+ set: prop.asset.cik
1498
+ } : undefined,
1499
+ exchange: prop.asset.exchange !== undefined ? {
1500
+ set: prop.asset.exchange
1501
+ } : undefined,
1502
+ currency: prop.asset.currency !== undefined ? {
1503
+ set: prop.asset.currency
1504
+ } : undefined,
1505
+ country: prop.asset.country !== undefined ? {
1506
+ set: prop.asset.country
1507
+ } : undefined,
1508
+ sector: prop.asset.sector !== undefined ? {
1509
+ set: prop.asset.sector
1510
+ } : undefined,
1511
+ industry: prop.asset.industry !== undefined ? {
1512
+ set: prop.asset.industry
1513
+ } : undefined,
1514
+ address: prop.asset.address !== undefined ? {
1515
+ set: prop.asset.address
1516
+ } : undefined,
1517
+ officialSite: prop.asset.officialSite !== undefined ? {
1518
+ set: prop.asset.officialSite
1519
+ } : undefined,
1520
+ fiscalYearEnd: prop.asset.fiscalYearEnd !== undefined ? {
1521
+ set: prop.asset.fiscalYearEnd
1522
+ } : undefined,
1523
+ latestQuarter: prop.asset.latestQuarter !== undefined ? {
1524
+ set: prop.asset.latestQuarter
1525
+ } : undefined,
1526
+ marketCapitalization: prop.asset.marketCapitalization !== undefined ? {
1527
+ set: prop.asset.marketCapitalization
1528
+ } : undefined,
1529
+ ebitda: prop.asset.ebitda !== undefined ? {
1530
+ set: prop.asset.ebitda
1531
+ } : undefined,
1532
+ peRatio: prop.asset.peRatio !== undefined ? {
1533
+ set: prop.asset.peRatio
1534
+ } : undefined,
1535
+ pegRatio: prop.asset.pegRatio !== undefined ? {
1536
+ set: prop.asset.pegRatio
1537
+ } : undefined,
1538
+ bookValue: prop.asset.bookValue !== undefined ? {
1539
+ set: prop.asset.bookValue
1540
+ } : undefined,
1541
+ dividendPerShare: prop.asset.dividendPerShare !== undefined ? {
1542
+ set: prop.asset.dividendPerShare
1543
+ } : undefined,
1544
+ dividendYield: prop.asset.dividendYield !== undefined ? {
1545
+ set: prop.asset.dividendYield
1546
+ } : undefined,
1547
+ eps: prop.asset.eps !== undefined ? {
1548
+ set: prop.asset.eps
1549
+ } : undefined,
1550
+ revenuePerShareTTM: prop.asset.revenuePerShareTTM !== undefined ? {
1551
+ set: prop.asset.revenuePerShareTTM
1552
+ } : undefined,
1553
+ profitMargin: prop.asset.profitMargin !== undefined ? {
1554
+ set: prop.asset.profitMargin
1555
+ } : undefined,
1556
+ operatingMarginTTM: prop.asset.operatingMarginTTM !== undefined ? {
1557
+ set: prop.asset.operatingMarginTTM
1558
+ } : undefined,
1559
+ returnOnAssetsTTM: prop.asset.returnOnAssetsTTM !== undefined ? {
1560
+ set: prop.asset.returnOnAssetsTTM
1561
+ } : undefined,
1562
+ returnOnEquityTTM: prop.asset.returnOnEquityTTM !== undefined ? {
1563
+ set: prop.asset.returnOnEquityTTM
1564
+ } : undefined,
1565
+ revenueTTM: prop.asset.revenueTTM !== undefined ? {
1566
+ set: prop.asset.revenueTTM
1567
+ } : undefined,
1568
+ grossProfitTTM: prop.asset.grossProfitTTM !== undefined ? {
1569
+ set: prop.asset.grossProfitTTM
1570
+ } : undefined,
1571
+ dilutedEPSTTM: prop.asset.dilutedEPSTTM !== undefined ? {
1572
+ set: prop.asset.dilutedEPSTTM
1573
+ } : undefined,
1574
+ quarterlyEarningsGrowthYOY: prop.asset.quarterlyEarningsGrowthYOY !== undefined ? {
1575
+ set: prop.asset.quarterlyEarningsGrowthYOY
1576
+ } : undefined,
1577
+ quarterlyRevenueGrowthYOY: prop.asset.quarterlyRevenueGrowthYOY !== undefined ? {
1578
+ set: prop.asset.quarterlyRevenueGrowthYOY
1579
+ } : undefined,
1580
+ analystTargetPrice: prop.asset.analystTargetPrice !== undefined ? {
1581
+ set: prop.asset.analystTargetPrice
1582
+ } : undefined,
1583
+ analystRatingStrongBuy: prop.asset.analystRatingStrongBuy !== undefined ? {
1584
+ set: prop.asset.analystRatingStrongBuy
1585
+ } : undefined,
1586
+ analystRatingBuy: prop.asset.analystRatingBuy !== undefined ? {
1587
+ set: prop.asset.analystRatingBuy
1588
+ } : undefined,
1589
+ analystRatingHold: prop.asset.analystRatingHold !== undefined ? {
1590
+ set: prop.asset.analystRatingHold
1591
+ } : undefined,
1592
+ analystRatingSell: prop.asset.analystRatingSell !== undefined ? {
1593
+ set: prop.asset.analystRatingSell
1594
+ } : undefined,
1595
+ analystRatingStrongSell: prop.asset.analystRatingStrongSell !== undefined ? {
1596
+ set: prop.asset.analystRatingStrongSell
1597
+ } : undefined,
1598
+ trailingPE: prop.asset.trailingPE !== undefined ? {
1599
+ set: prop.asset.trailingPE
1600
+ } : undefined,
1601
+ forwardPE: prop.asset.forwardPE !== undefined ? {
1602
+ set: prop.asset.forwardPE
1603
+ } : undefined,
1604
+ priceToSalesRatioTTM: prop.asset.priceToSalesRatioTTM !== undefined ? {
1605
+ set: prop.asset.priceToSalesRatioTTM
1606
+ } : undefined,
1607
+ priceToBookRatio: prop.asset.priceToBookRatio !== undefined ? {
1608
+ set: prop.asset.priceToBookRatio
1609
+ } : undefined,
1610
+ evToRevenue: prop.asset.evToRevenue !== undefined ? {
1611
+ set: prop.asset.evToRevenue
1612
+ } : undefined,
1613
+ evToEbitda: prop.asset.evToEbitda !== undefined ? {
1614
+ set: prop.asset.evToEbitda
1615
+ } : undefined,
1616
+ beta: prop.asset.beta !== undefined ? {
1617
+ set: prop.asset.beta
1618
+ } : undefined,
1619
+ week52High: prop.asset.week52High !== undefined ? {
1620
+ set: prop.asset.week52High
1621
+ } : undefined,
1622
+ week52Low: prop.asset.week52Low !== undefined ? {
1623
+ set: prop.asset.week52Low
1624
+ } : undefined,
1625
+ day50MovingAverage: prop.asset.day50MovingAverage !== undefined ? {
1626
+ set: prop.asset.day50MovingAverage
1627
+ } : undefined,
1628
+ day200MovingAverage: prop.asset.day200MovingAverage !== undefined ? {
1629
+ set: prop.asset.day200MovingAverage
1630
+ } : undefined,
1631
+ sharesOutstanding: prop.asset.sharesOutstanding !== undefined ? {
1632
+ set: prop.asset.sharesOutstanding
1633
+ } : undefined,
1634
+ dividendDate: prop.asset.dividendDate !== undefined ? {
1635
+ set: prop.asset.dividendDate
1636
+ } : undefined,
1637
+ exDividendDate: prop.asset.exDividendDate !== undefined ? {
1638
+ set: prop.asset.exDividendDate
1639
+ } : undefined,
1640
+ askPrice: prop.asset.askPrice !== undefined ? {
1641
+ set: prop.asset.askPrice
1642
+ } : undefined,
1643
+ bidPrice: prop.asset.bidPrice !== undefined ? {
1644
+ set: prop.asset.bidPrice
1645
+ } : undefined,
1646
+ },
1647
+ create: {
1648
+ symbol: prop.asset.symbol !== undefined ? prop.asset.symbol : undefined,
1649
+ name: prop.asset.name !== undefined ? prop.asset.name : undefined,
1650
+ type: prop.asset.type !== undefined ? prop.asset.type : undefined,
1651
+ logoUrl: prop.asset.logoUrl !== undefined ? prop.asset.logoUrl : undefined,
1652
+ description: prop.asset.description !== undefined ? prop.asset.description : undefined,
1653
+ cik: prop.asset.cik !== undefined ? prop.asset.cik : undefined,
1654
+ exchange: prop.asset.exchange !== undefined ? prop.asset.exchange : undefined,
1655
+ currency: prop.asset.currency !== undefined ? prop.asset.currency : undefined,
1656
+ country: prop.asset.country !== undefined ? prop.asset.country : undefined,
1657
+ sector: prop.asset.sector !== undefined ? prop.asset.sector : undefined,
1658
+ industry: prop.asset.industry !== undefined ? prop.asset.industry : undefined,
1659
+ address: prop.asset.address !== undefined ? prop.asset.address : undefined,
1660
+ officialSite: prop.asset.officialSite !== undefined ? prop.asset.officialSite : undefined,
1661
+ fiscalYearEnd: prop.asset.fiscalYearEnd !== undefined ? prop.asset.fiscalYearEnd : undefined,
1662
+ latestQuarter: prop.asset.latestQuarter !== undefined ? prop.asset.latestQuarter : undefined,
1663
+ marketCapitalization: prop.asset.marketCapitalization !== undefined ? prop.asset.marketCapitalization : undefined,
1664
+ ebitda: prop.asset.ebitda !== undefined ? prop.asset.ebitda : undefined,
1665
+ peRatio: prop.asset.peRatio !== undefined ? prop.asset.peRatio : undefined,
1666
+ pegRatio: prop.asset.pegRatio !== undefined ? prop.asset.pegRatio : undefined,
1667
+ bookValue: prop.asset.bookValue !== undefined ? prop.asset.bookValue : undefined,
1668
+ dividendPerShare: prop.asset.dividendPerShare !== undefined ? prop.asset.dividendPerShare : undefined,
1669
+ dividendYield: prop.asset.dividendYield !== undefined ? prop.asset.dividendYield : undefined,
1670
+ eps: prop.asset.eps !== undefined ? prop.asset.eps : undefined,
1671
+ revenuePerShareTTM: prop.asset.revenuePerShareTTM !== undefined ? prop.asset.revenuePerShareTTM : undefined,
1672
+ profitMargin: prop.asset.profitMargin !== undefined ? prop.asset.profitMargin : undefined,
1673
+ operatingMarginTTM: prop.asset.operatingMarginTTM !== undefined ? prop.asset.operatingMarginTTM : undefined,
1674
+ returnOnAssetsTTM: prop.asset.returnOnAssetsTTM !== undefined ? prop.asset.returnOnAssetsTTM : undefined,
1675
+ returnOnEquityTTM: prop.asset.returnOnEquityTTM !== undefined ? prop.asset.returnOnEquityTTM : undefined,
1676
+ revenueTTM: prop.asset.revenueTTM !== undefined ? prop.asset.revenueTTM : undefined,
1677
+ grossProfitTTM: prop.asset.grossProfitTTM !== undefined ? prop.asset.grossProfitTTM : undefined,
1678
+ dilutedEPSTTM: prop.asset.dilutedEPSTTM !== undefined ? prop.asset.dilutedEPSTTM : undefined,
1679
+ quarterlyEarningsGrowthYOY: prop.asset.quarterlyEarningsGrowthYOY !== undefined ? prop.asset.quarterlyEarningsGrowthYOY : undefined,
1680
+ quarterlyRevenueGrowthYOY: prop.asset.quarterlyRevenueGrowthYOY !== undefined ? prop.asset.quarterlyRevenueGrowthYOY : undefined,
1681
+ analystTargetPrice: prop.asset.analystTargetPrice !== undefined ? prop.asset.analystTargetPrice : undefined,
1682
+ analystRatingStrongBuy: prop.asset.analystRatingStrongBuy !== undefined ? prop.asset.analystRatingStrongBuy : undefined,
1683
+ analystRatingBuy: prop.asset.analystRatingBuy !== undefined ? prop.asset.analystRatingBuy : undefined,
1684
+ analystRatingHold: prop.asset.analystRatingHold !== undefined ? prop.asset.analystRatingHold : undefined,
1685
+ analystRatingSell: prop.asset.analystRatingSell !== undefined ? prop.asset.analystRatingSell : undefined,
1686
+ analystRatingStrongSell: prop.asset.analystRatingStrongSell !== undefined ? prop.asset.analystRatingStrongSell : undefined,
1687
+ trailingPE: prop.asset.trailingPE !== undefined ? prop.asset.trailingPE : undefined,
1688
+ forwardPE: prop.asset.forwardPE !== undefined ? prop.asset.forwardPE : undefined,
1689
+ priceToSalesRatioTTM: prop.asset.priceToSalesRatioTTM !== undefined ? prop.asset.priceToSalesRatioTTM : undefined,
1690
+ priceToBookRatio: prop.asset.priceToBookRatio !== undefined ? prop.asset.priceToBookRatio : undefined,
1691
+ evToRevenue: prop.asset.evToRevenue !== undefined ? prop.asset.evToRevenue : undefined,
1692
+ evToEbitda: prop.asset.evToEbitda !== undefined ? prop.asset.evToEbitda : undefined,
1693
+ beta: prop.asset.beta !== undefined ? prop.asset.beta : undefined,
1694
+ week52High: prop.asset.week52High !== undefined ? prop.asset.week52High : undefined,
1695
+ week52Low: prop.asset.week52Low !== undefined ? prop.asset.week52Low : undefined,
1696
+ day50MovingAverage: prop.asset.day50MovingAverage !== undefined ? prop.asset.day50MovingAverage : undefined,
1697
+ day200MovingAverage: prop.asset.day200MovingAverage !== undefined ? prop.asset.day200MovingAverage : undefined,
1698
+ sharesOutstanding: prop.asset.sharesOutstanding !== undefined ? prop.asset.sharesOutstanding : undefined,
1699
+ dividendDate: prop.asset.dividendDate !== undefined ? prop.asset.dividendDate : undefined,
1700
+ exDividendDate: prop.asset.exDividendDate !== undefined ? prop.asset.exDividendDate : undefined,
1701
+ askPrice: prop.asset.askPrice !== undefined ? prop.asset.askPrice : undefined,
1702
+ bidPrice: prop.asset.bidPrice !== undefined ? prop.asset.bidPrice : undefined,
1703
+ },
1704
+ }
1705
+ } : undefined,
1706
+ },
1707
+ }));
1708
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1709
+ const response = await client.mutate({
1710
+ mutation: UPDATE_MANY_NEWSARTICLEASSETSENTIMENT,
1711
+ variables: filteredVariables,
1712
+ // Don't cache mutations, but ensure we're using the freshest context
1713
+ fetchPolicy: 'no-cache'
1714
+ });
1715
+ if (response.errors && response.errors.length > 0)
1716
+ throw new Error(response.errors[0].message);
1717
+ if (response && response.data && response.data.updateManyNewsArticleAssetSentiment) {
1718
+ return response.data.updateManyNewsArticleAssetSentiment;
1719
+ }
1720
+ else {
1721
+ return null;
1722
+ }
1723
+ }
1724
+ catch (error) {
1725
+ lastError = error;
1726
+ // Check if this is a database connection error that we should retry
1727
+ const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
1728
+ ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
1729
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
1730
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
1731
+ (error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
1732
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
1733
+ retryCount++;
1734
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
1735
+ console.warn("Database connection error, retrying...");
1736
+ await new Promise(resolve => setTimeout(resolve, delay));
1737
+ continue;
1738
+ }
1739
+ // Log the error and rethrow
1740
+ console.error("Database error occurred:", error);
1741
+ throw error;
1579
1742
  }
1580
1743
  }
1581
- catch (error) {
1582
- console.error('Error in updateManyNewsArticleAssetSentiment:', error);
1583
- throw error;
1584
- }
1744
+ // If we exhausted retries, throw the last error
1745
+ throw lastError;
1585
1746
  },
1586
1747
  /**
1587
1748
  * Delete a single NewsArticleAssetSentiment record.
1588
- * @param props - Properties to update.
1749
+ * Enhanced with connection resilience against Prisma connection errors.
1750
+ * @param props - Properties to identify the record to delete.
1589
1751
  * @param globalClient - Apollo Client instance.
1590
1752
  * @returns The deleted NewsArticleAssetSentiment or null.
1591
1753
  */
1592
1754
  async delete(props, globalClient) {
1593
- const [modules, client] = await Promise.all([
1594
- (0, client_1.getApolloModules)(),
1595
- globalClient
1596
- ? Promise.resolve(globalClient)
1597
- : client_1.client
1598
- ]);
1599
- const { gql, ApolloError } = modules;
1600
- const DELETE_ONE_NEWSARTICLEASSETSENTIMENT = gql `
1601
- mutation deleteOneNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereUniqueInput!) {
1602
- deleteOneNewsArticleAssetSentiment(where: $where) {
1603
- id
1604
- }
1605
- }`;
1606
- const variables = {
1607
- where: {
1608
- id: props.id ? props.id : undefined,
1755
+ var _a, _b, _c, _d, _e;
1756
+ // Maximum number of retries for database connection issues
1757
+ const MAX_RETRIES = 3;
1758
+ let retryCount = 0;
1759
+ let lastError = null;
1760
+ // Retry loop to handle potential database connection issues
1761
+ while (retryCount < MAX_RETRIES) {
1762
+ try {
1763
+ const [modules, client] = await Promise.all([
1764
+ (0, client_1.getApolloModules)(),
1765
+ globalClient
1766
+ ? Promise.resolve(globalClient)
1767
+ : client_1.client
1768
+ ]);
1769
+ const { gql, ApolloError } = modules;
1770
+ const DELETE_ONE_NEWSARTICLEASSETSENTIMENT = gql `
1771
+ mutation deleteOneNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereUniqueInput!) {
1772
+ deleteOneNewsArticleAssetSentiment(where: $where) {
1773
+ id
1609
1774
  }
1610
- };
1611
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1612
- try {
1613
- const response = await client.mutate({ mutation: DELETE_ONE_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
1614
- if (response.errors && response.errors.length > 0)
1615
- throw new Error(response.errors[0].message);
1616
- if (response && response.data && response.data.deleteOneNewsArticleAssetSentiment) {
1617
- return response.data.deleteOneNewsArticleAssetSentiment;
1775
+ }`;
1776
+ const variables = {
1777
+ where: {
1778
+ id: props.id ? props.id : undefined,
1779
+ }
1780
+ };
1781
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1782
+ const response = await client.mutate({
1783
+ mutation: DELETE_ONE_NEWSARTICLEASSETSENTIMENT,
1784
+ variables: filteredVariables,
1785
+ // Don't cache mutations, but ensure we're using the freshest context
1786
+ fetchPolicy: 'no-cache'
1787
+ });
1788
+ if (response.errors && response.errors.length > 0)
1789
+ throw new Error(response.errors[0].message);
1790
+ if (response && response.data && response.data.deleteOneNewsArticleAssetSentiment) {
1791
+ return response.data.deleteOneNewsArticleAssetSentiment;
1792
+ }
1793
+ else {
1794
+ return null;
1795
+ }
1618
1796
  }
1619
- else {
1620
- return null;
1797
+ catch (error) {
1798
+ lastError = error;
1799
+ // Check if this is a database connection error that we should retry
1800
+ const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
1801
+ ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
1802
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
1803
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
1804
+ (error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
1805
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
1806
+ retryCount++;
1807
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
1808
+ console.warn("Database connection error, retrying...");
1809
+ await new Promise(resolve => setTimeout(resolve, delay));
1810
+ continue;
1811
+ }
1812
+ // Log the error and rethrow
1813
+ console.error("Database error occurred:", error);
1814
+ throw error;
1621
1815
  }
1622
1816
  }
1623
- catch (error) {
1624
- console.error('Error in deleteOneNewsArticleAssetSentiment:', error);
1625
- throw error;
1626
- }
1817
+ // If we exhausted retries, throw the last error
1818
+ throw lastError;
1627
1819
  },
1628
1820
  /**
1629
1821
  * Retrieve a single NewsArticleAssetSentiment record by ID.
1630
- * @param props - Properties to update.
1822
+ * Enhanced with connection resilience against Prisma connection errors.
1823
+ * @param props - Properties to identify the record.
1631
1824
  * @param globalClient - Apollo Client instance.
1825
+ * @param whereInput - Optional custom where input.
1632
1826
  * @returns The retrieved NewsArticleAssetSentiment or null.
1633
1827
  */
1634
1828
  async get(props, globalClient, whereInput) {
1635
- var _a, _b;
1636
- const [modules, client] = await Promise.all([
1637
- (0, client_1.getApolloModules)(),
1638
- globalClient
1639
- ? Promise.resolve(globalClient)
1640
- : client_1.client
1641
- ]);
1642
- const { gql, ApolloError } = modules;
1643
- const GET_NEWSARTICLEASSETSENTIMENT = gql `
1644
- query getNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereUniqueInput!) {
1645
- getNewsArticleAssetSentiment(where: $where) {
1646
- ${selectionSet}
1647
- }
1648
- }`;
1649
- const variables = {
1650
- where: whereInput ? whereInput : {
1651
- id: props.id !== undefined ? props.id : undefined,
1652
- url: props.url !== undefined ? props.url : undefined,
1653
- newsArticleId: props.newsArticleId !== undefined ? {
1654
- equals: props.newsArticleId
1655
- } : undefined,
1656
- },
1657
- };
1658
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1659
- try {
1660
- const response = await client.query({ query: GET_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
1661
- if (response.errors && response.errors.length > 0)
1662
- throw new Error(response.errors[0].message);
1663
- return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.getNewsArticleAssetSentiment) !== null && _b !== void 0 ? _b : null;
1664
- }
1665
- catch (error) {
1666
- if (error instanceof ApolloError && error.message === 'No NewsArticleAssetSentiment found') {
1667
- return null;
1829
+ var _a, _b, _c, _d, _e, _f, _g;
1830
+ // Maximum number of retries for database connection issues
1831
+ const MAX_RETRIES = 3;
1832
+ let retryCount = 0;
1833
+ let lastError = null;
1834
+ // Retry loop to handle potential database connection issues
1835
+ while (retryCount < MAX_RETRIES) {
1836
+ try {
1837
+ const [modules, client] = await Promise.all([
1838
+ (0, client_1.getApolloModules)(),
1839
+ globalClient
1840
+ ? Promise.resolve(globalClient)
1841
+ : client_1.client
1842
+ ]);
1843
+ const { gql, ApolloError } = modules;
1844
+ const GET_NEWSARTICLEASSETSENTIMENT = gql `
1845
+ query getNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereUniqueInput!) {
1846
+ getNewsArticleAssetSentiment(where: $where) {
1847
+ ${selectionSet}
1848
+ }
1849
+ }`;
1850
+ const variables = {
1851
+ where: whereInput ? whereInput : {
1852
+ id: props.id !== undefined ? props.id : undefined,
1853
+ url: props.url !== undefined ? props.url : undefined,
1854
+ newsArticleId: props.newsArticleId !== undefined ? {
1855
+ equals: props.newsArticleId
1856
+ } : undefined,
1857
+ },
1858
+ };
1859
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1860
+ const response = await client.query({
1861
+ query: GET_NEWSARTICLEASSETSENTIMENT,
1862
+ variables: filteredVariables,
1863
+ fetchPolicy: 'network-only', // Force network request to avoid stale cache
1864
+ });
1865
+ if (response.errors && response.errors.length > 0)
1866
+ throw new Error(response.errors[0].message);
1867
+ return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.getNewsArticleAssetSentiment) !== null && _b !== void 0 ? _b : null;
1668
1868
  }
1669
- else {
1670
- console.error('Error in getNewsArticleAssetSentiment:', error);
1869
+ catch (error) {
1870
+ lastError = error;
1871
+ // Check if this is a "No record found" error - this is an expected condition, not a failure
1872
+ if (error.message === 'No NewsArticleAssetSentiment found') {
1873
+ return null;
1874
+ }
1875
+ // Check if this is a database connection error that we should retry
1876
+ const isConnectionError = ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Server has closed the connection')) ||
1877
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Cannot reach database server')) ||
1878
+ ((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('Connection timed out')) ||
1879
+ ((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('Accelerate')) || // Prisma Accelerate proxy errors
1880
+ (error.networkError && ((_g = error.networkError.message) === null || _g === void 0 ? void 0 : _g.includes('Failed to fetch')));
1881
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
1882
+ retryCount++;
1883
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
1884
+ console.warn("Database connection error, retrying...");
1885
+ await new Promise(resolve => setTimeout(resolve, delay));
1886
+ continue;
1887
+ }
1888
+ // Log the error and rethrow
1889
+ console.error("Database error occurred:", error);
1671
1890
  throw error;
1672
1891
  }
1673
1892
  }
1893
+ // If we exhausted retries, throw the last error
1894
+ throw lastError;
1674
1895
  },
1675
1896
  /**
1676
1897
  * Retrieve all NewsArticleAssetSentiments records.
1898
+ * Enhanced with connection resilience against Prisma connection errors.
1677
1899
  * @param globalClient - Apollo Client instance.
1678
1900
  * @returns An array of NewsArticleAssetSentiment records or null.
1679
1901
  */
1680
1902
  async getAll(globalClient) {
1681
- var _a, _b;
1682
- const [modules, client] = await Promise.all([
1683
- (0, client_1.getApolloModules)(),
1684
- globalClient
1685
- ? Promise.resolve(globalClient)
1686
- : client_1.client
1687
- ]);
1688
- const { gql, ApolloError } = modules;
1689
- const GET_ALL_NEWSARTICLEASSETSENTIMENT = gql `
1690
- query getAllNewsArticleAssetSentiment {
1691
- newsArticleAssetSentiments {
1692
- ${selectionSet}
1693
- }
1694
- }`;
1695
- try {
1696
- const response = await client.query({ query: GET_ALL_NEWSARTICLEASSETSENTIMENT });
1697
- if (response.errors && response.errors.length > 0)
1698
- throw new Error(response.errors[0].message);
1699
- return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.newsArticleAssetSentiments) !== null && _b !== void 0 ? _b : null;
1700
- }
1701
- catch (error) {
1702
- if (error instanceof ApolloError && error.message === 'No NewsArticleAssetSentiment found') {
1703
- return null;
1903
+ var _a, _b, _c, _d, _e, _f, _g;
1904
+ // Maximum number of retries for database connection issues
1905
+ const MAX_RETRIES = 3;
1906
+ let retryCount = 0;
1907
+ let lastError = null;
1908
+ // Retry loop to handle potential database connection issues
1909
+ while (retryCount < MAX_RETRIES) {
1910
+ try {
1911
+ const [modules, client] = await Promise.all([
1912
+ (0, client_1.getApolloModules)(),
1913
+ globalClient
1914
+ ? Promise.resolve(globalClient)
1915
+ : client_1.client
1916
+ ]);
1917
+ const { gql, ApolloError } = modules;
1918
+ const GET_ALL_NEWSARTICLEASSETSENTIMENT = gql `
1919
+ query getAllNewsArticleAssetSentiment {
1920
+ newsArticleAssetSentiments {
1921
+ ${selectionSet}
1922
+ }
1923
+ }`;
1924
+ const response = await client.query({
1925
+ query: GET_ALL_NEWSARTICLEASSETSENTIMENT,
1926
+ fetchPolicy: 'network-only', // Force network request to avoid stale cache
1927
+ });
1928
+ if (response.errors && response.errors.length > 0)
1929
+ throw new Error(response.errors[0].message);
1930
+ return (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.newsArticleAssetSentiments) !== null && _b !== void 0 ? _b : null;
1704
1931
  }
1705
- else {
1706
- console.error('Error in getNewsArticleAssetSentiment:', error);
1932
+ catch (error) {
1933
+ lastError = error;
1934
+ // Check if this is a "No record found" error - this is an expected condition, not a failure
1935
+ if (error.message === 'No NewsArticleAssetSentiment found') {
1936
+ return null;
1937
+ }
1938
+ // Check if this is a database connection error that we should retry
1939
+ const isConnectionError = ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Server has closed the connection')) ||
1940
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Cannot reach database server')) ||
1941
+ ((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('Connection timed out')) ||
1942
+ ((_f = error.message) === null || _f === void 0 ? void 0 : _f.includes('Accelerate')) || // Prisma Accelerate proxy errors
1943
+ (error.networkError && ((_g = error.networkError.message) === null || _g === void 0 ? void 0 : _g.includes('Failed to fetch')));
1944
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
1945
+ retryCount++;
1946
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
1947
+ console.warn("Database connection error, retrying...");
1948
+ await new Promise(resolve => setTimeout(resolve, delay));
1949
+ continue;
1950
+ }
1951
+ // Log the error and rethrow
1952
+ console.error("Database error occurred:", error);
1707
1953
  throw error;
1708
1954
  }
1709
1955
  }
1956
+ // If we exhausted retries, throw the last error
1957
+ throw lastError;
1710
1958
  },
1711
1959
  /**
1712
1960
  * Find multiple NewsArticleAssetSentiment records based on conditions.
1961
+ * Enhanced with connection resilience against Prisma connection errors.
1713
1962
  * @param props - Conditions to find records.
1714
1963
  * @param globalClient - Apollo Client instance.
1964
+ * @param whereInput - Optional custom where input.
1715
1965
  * @returns An array of found NewsArticleAssetSentiment records or null.
1716
1966
  */
1717
1967
  async findMany(props, globalClient, whereInput) {
1718
- const [modules, client] = await Promise.all([
1719
- (0, client_1.getApolloModules)(),
1720
- globalClient
1721
- ? Promise.resolve(globalClient)
1722
- : client_1.client
1723
- ]);
1724
- const { gql, ApolloError } = modules;
1725
- const FIND_MANY_NEWSARTICLEASSETSENTIMENT = gql `
1726
- query findManyNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereInput!) {
1727
- newsArticleAssetSentiments(where: $where) {
1728
- ${selectionSet}
1729
- }
1730
- }`;
1731
- const variables = {
1732
- where: whereInput ? whereInput : {
1733
- id: props.id !== undefined ? {
1734
- equals: props.id
1735
- } : undefined,
1736
- newsArticleId: props.newsArticleId !== undefined ? {
1737
- equals: props.newsArticleId
1738
- } : undefined,
1739
- url: props.url !== undefined ? {
1740
- equals: props.url
1741
- } : undefined,
1742
- },
1743
- };
1744
- const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
1745
- try {
1746
- const response = await client.query({ query: FIND_MANY_NEWSARTICLEASSETSENTIMENT, variables: filteredVariables });
1747
- if (response.errors && response.errors.length > 0)
1748
- throw new Error(response.errors[0].message);
1749
- if (response && response.data && response.data.newsarticleassetsentiments) {
1750
- return response.data.newsArticleAssetSentiments;
1751
- }
1752
- else {
1753
- return [];
1968
+ var _a, _b, _c, _d, _e;
1969
+ // Maximum number of retries for database connection issues
1970
+ const MAX_RETRIES = 3;
1971
+ let retryCount = 0;
1972
+ let lastError = null;
1973
+ // Retry loop to handle potential database connection issues
1974
+ while (retryCount < MAX_RETRIES) {
1975
+ try {
1976
+ const [modules, client] = await Promise.all([
1977
+ (0, client_1.getApolloModules)(),
1978
+ globalClient
1979
+ ? Promise.resolve(globalClient)
1980
+ : client_1.client
1981
+ ]);
1982
+ const { gql, ApolloError } = modules;
1983
+ const FIND_MANY_NEWSARTICLEASSETSENTIMENT = gql `
1984
+ query findManyNewsArticleAssetSentiment($where: NewsArticleAssetSentimentWhereInput!) {
1985
+ newsArticleAssetSentiments(where: $where) {
1986
+ ${selectionSet}
1754
1987
  }
1755
- }
1756
- catch (error) {
1757
- if (error instanceof ApolloError && error.message === 'No NewsArticleAssetSentiment found') {
1758
- return null;
1988
+ }`;
1989
+ const variables = {
1990
+ where: whereInput ? whereInput : {
1991
+ id: props.id !== undefined ? {
1992
+ equals: props.id
1993
+ } : undefined,
1994
+ newsArticleId: props.newsArticleId !== undefined ? {
1995
+ equals: props.newsArticleId
1996
+ } : undefined,
1997
+ url: props.url !== undefined ? {
1998
+ equals: props.url
1999
+ } : undefined,
2000
+ },
2001
+ };
2002
+ const filteredVariables = (0, utils_1.removeUndefinedProps)(variables);
2003
+ const response = await client.query({
2004
+ query: FIND_MANY_NEWSARTICLEASSETSENTIMENT,
2005
+ variables: filteredVariables,
2006
+ fetchPolicy: 'network-only', // Force network request to avoid stale cache
2007
+ });
2008
+ if (response.errors && response.errors.length > 0)
2009
+ throw new Error(response.errors[0].message);
2010
+ if (response && response.data && response.data.newsarticleassetsentiments) {
2011
+ return response.data.newsArticleAssetSentiments;
2012
+ }
2013
+ else {
2014
+ return [];
2015
+ }
1759
2016
  }
1760
- else {
1761
- console.error('Error in getNewsArticleAssetSentiment:', error);
2017
+ catch (error) {
2018
+ lastError = error;
2019
+ // Check if this is a "No record found" error - this is an expected condition, not a failure
2020
+ if (error.message === 'No NewsArticleAssetSentiment found') {
2021
+ return null;
2022
+ }
2023
+ // Check if this is a database connection error that we should retry
2024
+ const isConnectionError = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Server has closed the connection')) ||
2025
+ ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot reach database server')) ||
2026
+ ((_c = error.message) === null || _c === void 0 ? void 0 : _c.includes('Connection timed out')) ||
2027
+ ((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('Accelerate')) || // Prisma Accelerate proxy errors
2028
+ (error.networkError && ((_e = error.networkError.message) === null || _e === void 0 ? void 0 : _e.includes('Failed to fetch')));
2029
+ if (isConnectionError && retryCount < MAX_RETRIES - 1) {
2030
+ retryCount++;
2031
+ const delay = Math.pow(2, retryCount) * 100; // Exponential backoff: 200ms, 400ms, 800ms
2032
+ console.warn("Database connection error, retrying...");
2033
+ await new Promise(resolve => setTimeout(resolve, delay));
2034
+ continue;
2035
+ }
2036
+ // Log the error and rethrow
2037
+ console.error("Database error occurred:", error);
1762
2038
  throw error;
1763
2039
  }
1764
2040
  }
2041
+ // If we exhausted retries, throw the last error
2042
+ throw lastError;
1765
2043
  }
1766
2044
  };
1767
2045
  //# sourceMappingURL=NewsArticleAssetSentiment.js.map