adaptic-backend 1.0.340 → 1.0.342

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