serene-core-server 0.1.1

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 (315) hide show
  1. package/dist/apollo/resolvers/mutations/mailing-lists.d.ts +11 -0
  2. package/dist/apollo/resolvers/mutations/mailing-lists.js +30 -0
  3. package/dist/apollo/resolvers/mutations/user-preferences.d.ts +13 -0
  4. package/dist/apollo/resolvers/mutations/user-preferences.js +31 -0
  5. package/dist/apollo/resolvers/mutations/users.d.ts +28 -0
  6. package/dist/apollo/resolvers/mutations/users.js +44 -0
  7. package/dist/apollo/resolvers/queries/access.d.ts +11 -0
  8. package/dist/apollo/resolvers/queries/access.js +25 -0
  9. package/dist/apollo/resolvers/queries/profile.d.ts +11 -0
  10. package/dist/apollo/resolvers/queries/profile.js +25 -0
  11. package/dist/apollo/resolvers/queries/quotas.d.ts +21 -0
  12. package/dist/apollo/resolvers/queries/quotas.js +25 -0
  13. package/dist/apollo/resolvers/queries/tech.d.ts +5 -0
  14. package/dist/apollo/resolvers/queries/tech.js +35 -0
  15. package/dist/apollo/resolvers/queries/user-preferences.d.ts +5 -0
  16. package/dist/apollo/resolvers/queries/user-preferences.js +33 -0
  17. package/dist/apollo/resolvers/queries/users.d.ts +15 -0
  18. package/dist/apollo/resolvers/queries/users.js +28 -0
  19. package/dist/apollo/resolvers/resolvers.d.ts +20 -0
  20. package/dist/apollo/resolvers/resolvers.js +38 -0
  21. package/dist/apollo/typedefs/typedefs.d.ts +1 -0
  22. package/dist/apollo/typedefs/typedefs.js +142 -0
  23. package/dist/index.d.ts +52 -0
  24. package/dist/index.js +68 -0
  25. package/dist/models/chat/chat-message-created-model.d.ts +17 -0
  26. package/dist/models/chat/chat-message-created-model.js +113 -0
  27. package/dist/models/chat/chat-message-model.d.ts +44 -0
  28. package/dist/models/chat/chat-message-model.js +523 -0
  29. package/dist/models/chat/chat-participant-model.d.ts +39 -0
  30. package/dist/models/chat/chat-participant-model.js +211 -0
  31. package/dist/models/chat/chat-session-model.d.ts +92 -0
  32. package/dist/models/chat/chat-session-model.js +301 -0
  33. package/dist/models/chat/chat-settings-model.d.ts +87 -0
  34. package/dist/models/chat/chat-settings-model.js +261 -0
  35. package/dist/models/feature-flags/feature-flag-model.d.ts +40 -0
  36. package/dist/models/feature-flags/feature-flag-model.js +164 -0
  37. package/dist/models/instances/instance-model.d.ts +93 -0
  38. package/dist/models/instances/instance-model.js +432 -0
  39. package/dist/models/instances/instance-setting-model.d.ts +39 -0
  40. package/dist/models/instances/instance-setting-model.js +193 -0
  41. package/dist/models/mailing-lists/mailing-list-model.d.ts +34 -0
  42. package/dist/models/mailing-lists/mailing-list-model.js +154 -0
  43. package/dist/models/mailing-lists/mailing-list-subscriber-model.d.ts +36 -0
  44. package/dist/models/mailing-lists/mailing-list-subscriber-model.js +152 -0
  45. package/dist/models/quotas/resource-quota-total-model.d.ts +46 -0
  46. package/dist/models/quotas/resource-quota-total-model.js +200 -0
  47. package/dist/models/quotas/resource-quota-usage-model.d.ts +51 -0
  48. package/dist/models/quotas/resource-quota-usage-model.js +181 -0
  49. package/dist/models/tech/rate-limited-api-event-model.d.ts +25 -0
  50. package/dist/models/tech/rate-limited-api-event-model.js +161 -0
  51. package/dist/models/tech/rate-limited-api-model.d.ts +21 -0
  52. package/dist/models/tech/rate-limited-api-model.js +141 -0
  53. package/dist/models/tech/tech-model.d.ts +44 -0
  54. package/dist/models/tech/tech-model.js +268 -0
  55. package/dist/models/tech/tech-provider-api-key-model.d.ts +43 -0
  56. package/dist/models/tech/tech-provider-api-key-model.js +224 -0
  57. package/dist/models/tech/tech-provider-model.d.ts +28 -0
  58. package/dist/models/tech/tech-provider-model.js +197 -0
  59. package/dist/models/users/external-user-integration-model.d.ts +36 -0
  60. package/dist/models/users/external-user-integration-model.js +196 -0
  61. package/dist/models/users/user-error-model.d.ts +54 -0
  62. package/dist/models/users/user-error-model.js +173 -0
  63. package/dist/models/users/user-error-summary-model.d.ts +45 -0
  64. package/dist/models/users/user-error-summary-model.js +172 -0
  65. package/dist/models/users/user-group-member-model.d.ts +41 -0
  66. package/dist/models/users/user-group-member-model.js +193 -0
  67. package/dist/models/users/user-group-model.d.ts +27 -0
  68. package/dist/models/users/user-group-model.js +146 -0
  69. package/dist/models/users/user-model.d.ts +46 -0
  70. package/dist/models/users/user-model.js +153 -0
  71. package/dist/models/users/user-preference-model.d.ts +60 -0
  72. package/dist/models/users/user-preference-model.js +228 -0
  73. package/dist/models/users/user-profile-model.d.ts +58 -0
  74. package/dist/models/users/user-profile-model.js +173 -0
  75. package/dist/prisma.config.d.ts +3 -0
  76. package/dist/prisma.config.js +13 -0
  77. package/dist/services/access/access-service.d.ts +12 -0
  78. package/dist/services/access/access-service.js +44 -0
  79. package/dist/services/access/encrypt-service.d.ts +13 -0
  80. package/dist/services/access/encrypt-service.js +84 -0
  81. package/dist/services/api-usage/api-usage-base-service.d.ts +15 -0
  82. package/dist/services/api-usage/api-usage-base-service.js +75 -0
  83. package/dist/services/console/service.d.ts +7 -0
  84. package/dist/services/console/service.js +70 -0
  85. package/dist/services/db/pg/pg-estimate-size-service.d.ts +16 -0
  86. package/dist/services/db/pg/pg-estimate-size-service.js +90 -0
  87. package/dist/services/files/types.d.ts +6 -0
  88. package/dist/services/files/types.js +2 -0
  89. package/dist/services/files/walk-dir-service.d.ts +8 -0
  90. package/dist/services/files/walk-dir-service.js +94 -0
  91. package/dist/services/locale/countries.d.ts +6 -0
  92. package/dist/services/locale/countries.js +484 -0
  93. package/dist/services/mailing-lists/mailing-list-subscriber-service.d.ts +14 -0
  94. package/dist/services/mailing-lists/mailing-list-subscriber-service.js +45 -0
  95. package/dist/services/process/sleep.d.ts +2 -0
  96. package/dist/services/process/sleep.js +10 -0
  97. package/dist/services/quotas/mutate-service.d.ts +5 -0
  98. package/dist/services/quotas/mutate-service.js +54 -0
  99. package/dist/services/quotas/query-service.d.ts +27 -0
  100. package/dist/services/quotas/query-service.js +137 -0
  101. package/dist/services/quotas/utils-service.d.ts +4 -0
  102. package/dist/services/quotas/utils-service.js +28 -0
  103. package/dist/services/tech/tech-provider-mutate-service.d.ts +7 -0
  104. package/dist/services/tech/tech-provider-mutate-service.js +142 -0
  105. package/dist/services/tech/tech-query-service.d.ts +9 -0
  106. package/dist/services/tech/tech-query-service.js +77 -0
  107. package/dist/services/user-preference/service.d.ts +10 -0
  108. package/dist/services/user-preference/service.js +70 -0
  109. package/dist/services/users/external-user-integration-service.d.ts +9 -0
  110. package/dist/services/users/external-user-integration-service.js +42 -0
  111. package/dist/services/users/profile-service.d.ts +40 -0
  112. package/dist/services/users/profile-service.js +408 -0
  113. package/dist/services/users/service.d.ts +64 -0
  114. package/dist/services/users/service.js +187 -0
  115. package/dist/services/users/user-error-service.d.ts +4 -0
  116. package/dist/services/users/user-error-service.js +42 -0
  117. package/dist/services/users/users-group-service.d.ts +16 -0
  118. package/dist/services/users/users-group-service.js +68 -0
  119. package/dist/services/utils/string-utils-service.d.ts +5 -0
  120. package/dist/services/utils/string-utils-service.js +41 -0
  121. package/dist/src/apollo/resolvers/mutations/mailing-lists.d.ts +11 -0
  122. package/dist/src/apollo/resolvers/mutations/mailing-lists.js +19 -0
  123. package/dist/src/apollo/resolvers/mutations/user-preferences.d.ts +13 -0
  124. package/dist/src/apollo/resolvers/mutations/user-preferences.js +20 -0
  125. package/dist/src/apollo/resolvers/mutations/users.d.ts +28 -0
  126. package/dist/src/apollo/resolvers/mutations/users.js +33 -0
  127. package/dist/src/apollo/resolvers/queries/access.d.ts +11 -0
  128. package/dist/src/apollo/resolvers/queries/access.js +14 -0
  129. package/dist/src/apollo/resolvers/queries/profile.d.ts +11 -0
  130. package/dist/src/apollo/resolvers/queries/profile.js +14 -0
  131. package/dist/src/apollo/resolvers/queries/quotas.d.ts +21 -0
  132. package/dist/src/apollo/resolvers/queries/quotas.js +14 -0
  133. package/dist/src/apollo/resolvers/queries/tech.d.ts +5 -0
  134. package/dist/src/apollo/resolvers/queries/tech.js +24 -0
  135. package/dist/src/apollo/resolvers/queries/user-preferences.d.ts +5 -0
  136. package/dist/src/apollo/resolvers/queries/user-preferences.js +22 -0
  137. package/dist/src/apollo/resolvers/queries/users.d.ts +15 -0
  138. package/dist/src/apollo/resolvers/queries/users.js +17 -0
  139. package/dist/src/apollo/typedefs/typedefs.d.ts +1 -0
  140. package/dist/src/apollo/typedefs/typedefs.js +139 -0
  141. package/dist/src/db.d.ts +3 -0
  142. package/dist/src/db.js +11 -0
  143. package/dist/src/index.d.ts +52 -0
  144. package/dist/src/index.js +52 -0
  145. package/dist/src/models/chat/chat-message-created-model.d.ts +17 -0
  146. package/dist/src/models/chat/chat-message-created-model.js +92 -0
  147. package/dist/src/models/chat/chat-message-model.d.ts +44 -0
  148. package/dist/src/models/chat/chat-message-model.js +484 -0
  149. package/dist/src/models/chat/chat-participant-model.d.ts +39 -0
  150. package/dist/src/models/chat/chat-participant-model.js +178 -0
  151. package/dist/src/models/chat/chat-session-model.d.ts +92 -0
  152. package/dist/src/models/chat/chat-session-model.js +266 -0
  153. package/dist/src/models/chat/chat-settings-model.d.ts +87 -0
  154. package/dist/src/models/chat/chat-settings-model.js +230 -0
  155. package/dist/src/models/feature-flags/feature-flag-model.d.ts +40 -0
  156. package/dist/src/models/feature-flags/feature-flag-model.js +137 -0
  157. package/dist/src/models/instances/instance-model.d.ts +100 -0
  158. package/dist/src/models/instances/instance-model.js +466 -0
  159. package/dist/src/models/instances/instance-setting-model.d.ts +39 -0
  160. package/dist/src/models/instances/instance-setting-model.js +164 -0
  161. package/dist/src/models/mailing-lists/mailing-list-model.d.ts +34 -0
  162. package/dist/src/models/mailing-lists/mailing-list-model.js +127 -0
  163. package/dist/src/models/mailing-lists/mailing-list-subscriber-model.d.ts +36 -0
  164. package/dist/src/models/mailing-lists/mailing-list-subscriber-model.js +127 -0
  165. package/dist/src/models/quotas/resource-quota-total-model.d.ts +46 -0
  166. package/dist/src/models/quotas/resource-quota-total-model.js +170 -0
  167. package/dist/src/models/quotas/resource-quota-usage-model.d.ts +51 -0
  168. package/dist/src/models/quotas/resource-quota-usage-model.js +151 -0
  169. package/dist/src/models/tech/rate-limited-api-event-model.d.ts +25 -0
  170. package/dist/src/models/tech/rate-limited-api-event-model.js +134 -0
  171. package/dist/src/models/tech/rate-limited-api-model.d.ts +21 -0
  172. package/dist/src/models/tech/rate-limited-api-model.js +116 -0
  173. package/dist/src/models/tech/tech-model.d.ts +44 -0
  174. package/dist/src/models/tech/tech-model.js +239 -0
  175. package/dist/src/models/tech/tech-provider-api-key-model.d.ts +43 -0
  176. package/dist/src/models/tech/tech-provider-api-key-model.js +195 -0
  177. package/dist/src/models/tech/tech-provider-model.d.ts +28 -0
  178. package/dist/src/models/tech/tech-provider-model.js +170 -0
  179. package/dist/src/models/users/external-user-integration-model.d.ts +36 -0
  180. package/dist/src/models/users/external-user-integration-model.js +167 -0
  181. package/dist/src/models/users/user-error-model.d.ts +54 -0
  182. package/dist/src/models/users/user-error-model.js +146 -0
  183. package/dist/src/models/users/user-error-summary-model.d.ts +45 -0
  184. package/dist/src/models/users/user-error-summary-model.js +145 -0
  185. package/dist/src/models/users/user-group-member-model.d.ts +41 -0
  186. package/dist/src/models/users/user-group-member-model.js +164 -0
  187. package/dist/src/models/users/user-group-model.d.ts +27 -0
  188. package/dist/src/models/users/user-group-model.js +121 -0
  189. package/dist/src/models/users/user-model.d.ts +46 -0
  190. package/dist/src/models/users/user-model.js +126 -0
  191. package/dist/src/models/users/user-preference-model.d.ts +60 -0
  192. package/dist/src/models/users/user-preference-model.js +197 -0
  193. package/dist/src/models/users/user-profile-model.d.ts +58 -0
  194. package/dist/src/models/users/user-profile-model.js +146 -0
  195. package/dist/src/services/access/access-service.d.ts +12 -0
  196. package/dist/src/services/access/access-service.js +27 -0
  197. package/dist/src/services/access/encrypt-service.d.ts +13 -0
  198. package/dist/src/services/access/encrypt-service.js +79 -0
  199. package/dist/src/services/api-usage/api-usage-base-service.d.ts +15 -0
  200. package/dist/src/services/api-usage/api-usage-base-service.js +58 -0
  201. package/dist/src/services/console/service.d.ts +7 -0
  202. package/dist/src/services/console/service.js +18 -0
  203. package/dist/src/services/db/pg/pg-estimate-size-service.d.ts +16 -0
  204. package/dist/src/services/db/pg/pg-estimate-size-service.js +83 -0
  205. package/dist/src/services/files/types.d.ts +6 -0
  206. package/dist/src/services/files/types.js +1 -0
  207. package/dist/src/services/files/walk-dir-service.d.ts +8 -0
  208. package/dist/src/services/files/walk-dir-service.js +77 -0
  209. package/dist/src/services/locale/countries.d.ts +6 -0
  210. package/dist/src/services/locale/countries.js +481 -0
  211. package/dist/src/services/mailing-lists/mailing-list-subscriber-service.d.ts +14 -0
  212. package/dist/src/services/mailing-lists/mailing-list-subscriber-service.js +28 -0
  213. package/dist/src/services/process/sleep.d.ts +2 -0
  214. package/dist/src/services/process/sleep.js +6 -0
  215. package/dist/src/services/quotas/mutate-service.d.ts +5 -0
  216. package/dist/src/services/quotas/mutate-service.js +37 -0
  217. package/dist/src/services/quotas/query-service.d.ts +27 -0
  218. package/dist/src/services/quotas/query-service.js +116 -0
  219. package/dist/src/services/quotas/utils-service.d.ts +4 -0
  220. package/dist/src/services/quotas/utils-service.js +22 -0
  221. package/dist/src/services/tech/tech-provider-mutate-service.d.ts +7 -0
  222. package/dist/src/services/tech/tech-provider-mutate-service.js +85 -0
  223. package/dist/src/services/tech/tech-query-service.d.ts +9 -0
  224. package/dist/src/services/tech/tech-query-service.js +58 -0
  225. package/dist/src/services/user-preference/service.d.ts +10 -0
  226. package/dist/src/services/user-preference/service.js +49 -0
  227. package/dist/src/services/users/external-user-integration-service.d.ts +9 -0
  228. package/dist/src/services/users/external-user-integration-service.js +25 -0
  229. package/dist/src/services/users/profile-service.d.ts +40 -0
  230. package/dist/src/services/users/profile-service.js +385 -0
  231. package/dist/src/services/users/service.d.ts +64 -0
  232. package/dist/src/services/users/service.js +152 -0
  233. package/dist/src/services/users/user-error-service.d.ts +4 -0
  234. package/dist/src/services/users/user-error-service.js +27 -0
  235. package/dist/src/services/users/users-group-service.d.ts +16 -0
  236. package/dist/src/services/users/users-group-service.js +51 -0
  237. package/dist/src/services/utils/field-naming-service.d.ts +20 -0
  238. package/dist/src/services/utils/field-naming-service.js +59 -0
  239. package/dist/src/services/utils/string-utils-service.d.ts +5 -0
  240. package/dist/src/services/utils/string-utils-service.js +37 -0
  241. package/dist/src/types/errors.d.ts +9 -0
  242. package/dist/src/types/errors.js +15 -0
  243. package/dist/src/types/user-types.d.ts +11 -0
  244. package/dist/src/types/user-types.js +14 -0
  245. package/dist/types/errors.d.ts +9 -0
  246. package/dist/types/errors.js +20 -0
  247. package/dist/types/user-types.d.ts +11 -0
  248. package/dist/types/user-types.js +19 -0
  249. package/package.json +21 -0
  250. package/prisma/schema.prisma +572 -0
  251. package/prisma.config.ts +14 -0
  252. package/src/apollo/README.md +4 -0
  253. package/src/apollo/resolvers/mutations/mailing-lists.ts +30 -0
  254. package/src/apollo/resolvers/mutations/user-preferences.ts +33 -0
  255. package/src/apollo/resolvers/mutations/users.ts +61 -0
  256. package/src/apollo/resolvers/queries/access.ts +23 -0
  257. package/src/apollo/resolvers/queries/profile.ts +24 -0
  258. package/src/apollo/resolvers/queries/quotas.ts +25 -0
  259. package/src/apollo/resolvers/queries/tech.ts +42 -0
  260. package/src/apollo/resolvers/queries/user-preferences.ts +34 -0
  261. package/src/apollo/resolvers/queries/users.ts +33 -0
  262. package/src/apollo/typedefs/typedefs.ts +139 -0
  263. package/src/db.ts +19 -0
  264. package/src/index.ts +52 -0
  265. package/src/models/chat/chat-message-created-model.ts +126 -0
  266. package/src/models/chat/chat-message-model.ts +678 -0
  267. package/src/models/chat/chat-participant-model.ts +248 -0
  268. package/src/models/chat/chat-session-model.ts +397 -0
  269. package/src/models/chat/chat-settings-model.ts +336 -0
  270. package/src/models/feature-flags/feature-flag-model.ts +198 -0
  271. package/src/models/instances/instance-model.ts +673 -0
  272. package/src/models/instances/instance-setting-model.ts +235 -0
  273. package/src/models/mailing-lists/mailing-list-model.ts +177 -0
  274. package/src/models/mailing-lists/mailing-list-subscriber-model.ts +194 -0
  275. package/src/models/quotas/resource-quota-total-model.ts +243 -0
  276. package/src/models/quotas/resource-quota-usage-model.ts +219 -0
  277. package/src/models/tech/rate-limited-api-event-model.ts +190 -0
  278. package/src/models/tech/rate-limited-api-model.ts +171 -0
  279. package/src/models/tech/tech-model.ts +360 -0
  280. package/src/models/tech/tech-provider-api-key-model.ts +289 -0
  281. package/src/models/tech/tech-provider-model.ts +247 -0
  282. package/src/models/users/external-user-integration-model.ts +236 -0
  283. package/src/models/users/user-error-model.ts +219 -0
  284. package/src/models/users/user-error-summary-model.ts +216 -0
  285. package/src/models/users/user-group-member-model.ts +233 -0
  286. package/src/models/users/user-group-model.ts +174 -0
  287. package/src/models/users/user-model.ts +172 -0
  288. package/src/models/users/user-preference-model.ts +285 -0
  289. package/src/models/users/user-profile-model.ts +207 -0
  290. package/src/services/access/access-service.ts +36 -0
  291. package/src/services/access/encrypt-service.ts +122 -0
  292. package/src/services/api-usage/api-usage-base-service.ts +95 -0
  293. package/src/services/console/service.ts +24 -0
  294. package/src/services/db/pg/pg-estimate-size-service.ts +119 -0
  295. package/src/services/files/types.ts +7 -0
  296. package/src/services/files/walk-dir-service.ts +135 -0
  297. package/src/services/locale/countries.ts +483 -0
  298. package/src/services/mailing-lists/mailing-list-subscriber-service.ts +54 -0
  299. package/src/services/process/sleep.ts +7 -0
  300. package/src/services/quotas/mutate-service.ts +66 -0
  301. package/src/services/quotas/query-service.ts +197 -0
  302. package/src/services/quotas/utils-service.ts +29 -0
  303. package/src/services/tech/tech-provider-mutate-service.ts +136 -0
  304. package/src/services/tech/tech-query-service.ts +93 -0
  305. package/src/services/user-preference/service.ts +110 -0
  306. package/src/services/users/external-user-integration-service.ts +51 -0
  307. package/src/services/users/profile-service.ts +513 -0
  308. package/src/services/users/service.ts +293 -0
  309. package/src/services/users/user-error-service.ts +74 -0
  310. package/src/services/users/users-group-service.ts +85 -0
  311. package/src/services/utils/field-naming-service.ts +78 -0
  312. package/src/services/utils/string-utils-service.ts +48 -0
  313. package/src/types/errors.ts +18 -0
  314. package/src/types/user-types.ts +19 -0
  315. package/tsconfig.json +25 -0
@@ -0,0 +1,171 @@
1
+ import { PrismaClient } from '@/prisma/client'
2
+
3
+ export class RateLimitedApiModel {
4
+
5
+ // Consts
6
+ clName = 'RateLimitedApiModel'
7
+
8
+ // Code
9
+ async create(prisma: PrismaClient,
10
+ id: string | undefined,
11
+ techId: string,
12
+ ratePerMinute: number) {
13
+
14
+ // Debug
15
+ const fnName = `${this.clName}.create()`
16
+
17
+ // Create record
18
+ try {
19
+ return await prisma.rateLimitedApi.create({
20
+ data: {
21
+ id: id,
22
+ techId: techId,
23
+ ratePerMinute: ratePerMinute
24
+ }
25
+ })
26
+ } catch(error) {
27
+ console.error(`${fnName}: error: ${error}`)
28
+ throw 'Prisma error'
29
+ }
30
+ }
31
+
32
+ async getById(prisma: PrismaClient,
33
+ id: string) {
34
+
35
+ // Debug
36
+ const fnName = `${this.clName}.getById()`
37
+
38
+ // Query record
39
+ var rateLimitedApi: any = undefined
40
+
41
+ try {
42
+ rateLimitedApi = await
43
+ prisma.rateLimitedApi.findUnique({
44
+ where: {
45
+ id: id
46
+ }
47
+ })
48
+ } catch(error: any) {
49
+ if (!(error instanceof error.NotFound)) {
50
+ console.error(`${fnName}: error: ${error}`)
51
+ throw 'Prisma error'
52
+ }
53
+ }
54
+
55
+ // Return OK
56
+ return rateLimitedApi
57
+ }
58
+
59
+ async getByTechId(
60
+ prisma: PrismaClient,
61
+ techId: string) {
62
+
63
+ // Debug
64
+ const fnName = `${this.clName}.getByTechId()`
65
+
66
+ // Validate
67
+ if (techId == null) {
68
+ console.error(`${fnName}: id is null and techId is null`)
69
+ throw 'Prisma error'
70
+ }
71
+
72
+ // Query record
73
+ var rateLimitedApi: any = undefined
74
+
75
+ try {
76
+ rateLimitedApi = await
77
+ prisma.rateLimitedApi.findFirst({
78
+ where: {
79
+ techId: techId
80
+ }
81
+ })
82
+ } catch(error: any) {
83
+ console.error(`${fnName}: error: ${error}`)
84
+
85
+ if (!(error instanceof error.NotFound)) {
86
+ console.error(`${fnName}: error: ${error}`)
87
+ throw 'Prisma error'
88
+ }
89
+ }
90
+
91
+ // Return OK
92
+ return rateLimitedApi
93
+ }
94
+
95
+ async update(prisma: PrismaClient,
96
+ id: string,
97
+ techId: string,
98
+ ratePerMinute: number) {
99
+
100
+ // Debug
101
+ const fnName = `${this.clName}.update()`
102
+
103
+ // Update record
104
+ try {
105
+ return await prisma.rateLimitedApi.update({
106
+ data: {
107
+ techId: techId,
108
+ ratePerMinute: ratePerMinute
109
+ },
110
+ where: {
111
+ id: id
112
+ }
113
+ })
114
+ } catch(error) {
115
+ console.error(`${fnName}: error: ${error}`)
116
+ throw 'Prisma error'
117
+ }
118
+ }
119
+
120
+ async upsert(prisma: PrismaClient,
121
+ id: string | undefined,
122
+ techId: string,
123
+ ratePerMinute: number) {
124
+
125
+ // Debug
126
+ const fnName = `${this.clName}.upsert()`
127
+
128
+ // If the id is specified, try to get it
129
+ if (id != null) {
130
+
131
+ const rateLimitedApi = await
132
+ this.getById(
133
+ prisma,
134
+ id)
135
+
136
+ if (rateLimitedApi != null) {
137
+ id = rateLimitedApi.id
138
+ }
139
+ }
140
+
141
+ // Try to get by unique key
142
+ if (id == null) {
143
+
144
+ const rateLimitedApi = await
145
+ this.getByTechId(
146
+ prisma,
147
+ techId)
148
+
149
+ if (rateLimitedApi != null) {
150
+ id = rateLimitedApi.id
151
+ }
152
+ }
153
+
154
+ // Upsert
155
+ if (id == null) {
156
+
157
+ return await this.create(
158
+ prisma,
159
+ id,
160
+ techId,
161
+ ratePerMinute)
162
+ } else {
163
+
164
+ return await this.update(
165
+ prisma,
166
+ id,
167
+ techId,
168
+ ratePerMinute)
169
+ }
170
+ }
171
+ }
@@ -0,0 +1,360 @@
1
+ import { PrismaClient } from '@/prisma/client'
2
+ import { CustomError } from '../../types/errors'
3
+
4
+ export class TechModel {
5
+
6
+ // Consts
7
+ clName = 'TechModel'
8
+
9
+ // Code
10
+ async create(
11
+ prisma: PrismaClient,
12
+ techProviderId: string,
13
+ status: string,
14
+ variantName: string,
15
+ resource: string,
16
+ model: string | null,
17
+ protocol: string | null,
18
+ pricingTier: string,
19
+ isDefaultProvider: boolean,
20
+ isAdminOnly: boolean) {
21
+
22
+ // Debug
23
+ const fnName = `${this.clName}.create()`
24
+
25
+ // Create record
26
+ try {
27
+ return await prisma.tech.create({
28
+ data: {
29
+ techProviderId: techProviderId,
30
+ status: status,
31
+ variantName: variantName,
32
+ resource: resource,
33
+ model: model,
34
+ protocol: protocol,
35
+ pricingTier: pricingTier,
36
+ isDefaultProvider: isDefaultProvider,
37
+ isAdminOnly: isAdminOnly
38
+ }
39
+ })
40
+ } catch(error) {
41
+ console.error(`${fnName}: error: ${error}`)
42
+ throw 'Prisma error'
43
+ }
44
+ }
45
+
46
+ async filter(
47
+ prisma: PrismaClient,
48
+ techProviderId: string | undefined,
49
+ status: string | undefined,
50
+ resource: string | undefined,
51
+ model: string | null | undefined,
52
+ protocol: string | null | undefined,
53
+ isAdminOnly: boolean | undefined) {
54
+
55
+ // Debug
56
+ const fnName = `${this.clName}.filter()`
57
+
58
+ // console.log(`${fnName}: starting..`)
59
+
60
+ // Query
61
+ var tech: any = null
62
+
63
+ try {
64
+ tech = await prisma.tech.findMany({
65
+ where: {
66
+ techProviderId: techProviderId,
67
+ status: status,
68
+ resource: resource,
69
+ model: model,
70
+ protocol: protocol,
71
+ isAdminOnly: isAdminOnly
72
+ },
73
+ orderBy: [
74
+ {
75
+ variantName: 'asc'
76
+ }
77
+ ]
78
+ })
79
+ } catch(error: any) {
80
+ if (!(error instanceof error.NotFound)) {
81
+ console.error(`${fnName}: error: ${error}`)
82
+ throw 'Prisma error'
83
+ }
84
+ }
85
+
86
+ // Return
87
+ return tech
88
+ }
89
+
90
+ async getById(
91
+ prisma: PrismaClient,
92
+ id: string,
93
+ includeTechProvider: boolean = true) {
94
+
95
+ // Debug
96
+ const fnName = `${this.clName}.getById()`
97
+
98
+ // Validate
99
+ if (id == null) {
100
+ throw new CustomError(`${fnName}: id == null`)
101
+ }
102
+
103
+ // Query
104
+ var tech: any = null
105
+
106
+ try {
107
+ tech = await prisma.tech.findUnique({
108
+ include: {
109
+ techProvider: includeTechProvider
110
+ },
111
+ where: {
112
+ id: id
113
+ }
114
+ })
115
+ } catch(error: any) {
116
+ if (!(error instanceof error.NotFound)) {
117
+ console.error(`${fnName}: error: ${error}`)
118
+ throw 'Prisma error'
119
+ }
120
+ }
121
+
122
+ // Return
123
+ return tech
124
+ }
125
+
126
+ async getDefaultProvider(
127
+ prisma: PrismaClient,
128
+ resource: string,
129
+ includeTechProvider: boolean = true) {
130
+
131
+ // Debug
132
+ const fnName = `${this.clName}.getByKey()`
133
+
134
+ // console.log(`${fnName}: starting..`)
135
+
136
+ // Query
137
+ var tech: any = null
138
+
139
+ try {
140
+ tech = await prisma.tech.findFirst({
141
+ include: {
142
+ techProvider: includeTechProvider
143
+ },
144
+ where: {
145
+ isDefaultProvider: true,
146
+ resource: resource
147
+ }
148
+ })
149
+ } catch(error: any) {
150
+ if (!(error instanceof error.NotFound)) {
151
+ console.error(`${fnName}: error: ${error}`)
152
+ throw 'Prisma error'
153
+ }
154
+ }
155
+
156
+ // Return
157
+ return tech
158
+ }
159
+
160
+ async getByVariantName(
161
+ prisma: PrismaClient,
162
+ variantName: string,
163
+ includeTechProvider: boolean = true) {
164
+
165
+ // Debug
166
+ const fnName = `${this.clName}.getByVariantName()`
167
+
168
+ // console.log(`${fnName}: variantName: ${variantName}`)
169
+
170
+ // Validate
171
+ if (variantName == null) {
172
+ console.error(`${fnName}: id is null and variantName is null`)
173
+ throw 'Prisma error'
174
+ }
175
+
176
+ // Query
177
+ var tech: any = null
178
+
179
+ try {
180
+ tech = await prisma.tech.findFirst({
181
+ include: {
182
+ techProvider: includeTechProvider
183
+ },
184
+ where: {
185
+ variantName: variantName
186
+ }
187
+ })
188
+ } catch(error: any) {
189
+ if (!(error instanceof error.NotFound)) {
190
+ console.error(`${fnName}: error: ${error}`)
191
+ throw 'Prisma error'
192
+ }
193
+ }
194
+
195
+ // console.log(`${fnName}: tech: ${JSON.stringify(tech)}`)
196
+
197
+ // Return
198
+ return tech
199
+ }
200
+
201
+ async update(
202
+ prisma: PrismaClient,
203
+ id: string,
204
+ techProviderId: string | undefined,
205
+ status: string | undefined,
206
+ variantName: string | undefined,
207
+ resource: string | undefined,
208
+ model: string | null | undefined,
209
+ protocol: string | null | undefined,
210
+ pricingTier: string | undefined,
211
+ isDefaultProvider: boolean | undefined,
212
+ isAdminOnly: boolean | undefined) {
213
+
214
+ // Debug
215
+ const fnName = `${this.clName}.update()`
216
+
217
+ // Validate
218
+ if (id == null) {
219
+ throw new CustomError(`${fnName}: id == null for variantName: ` +
220
+ `${variantName}`)
221
+ }
222
+
223
+ // Update record
224
+ try {
225
+ return await prisma.tech.update({
226
+ data: {
227
+ techProviderId: techProviderId,
228
+ status: status,
229
+ variantName: variantName,
230
+ resource: resource,
231
+ model: model,
232
+ protocol: protocol,
233
+ pricingTier: pricingTier,
234
+ isDefaultProvider: isDefaultProvider,
235
+ isAdminOnly: isAdminOnly
236
+ },
237
+ where: {
238
+ id: id
239
+ }
240
+ })
241
+ } catch(error) {
242
+ console.error(`${fnName}: error: ${error}`)
243
+ throw 'Prisma error'
244
+ }
245
+ }
246
+
247
+ async upsert(prisma: PrismaClient,
248
+ id: string | undefined,
249
+ techProviderId: string | undefined,
250
+ status: string | undefined,
251
+ variantName: string | undefined,
252
+ resource: string | undefined,
253
+ model: string | null | undefined,
254
+ protocol: string | null | undefined,
255
+ pricingTier: string | undefined,
256
+ isDefaultProvider: boolean | undefined,
257
+ isAdminOnly: boolean | undefined) {
258
+
259
+ // Debug
260
+ const fnName = `${this.clName}.upsert()`
261
+
262
+ // If id isn't specified, try to get by variantName
263
+ if (id == null &&
264
+ variantName != null) {
265
+
266
+ const tech = await
267
+ this.getByVariantName(
268
+ prisma,
269
+ variantName)
270
+
271
+ if (tech != null) {
272
+ id = tech.id
273
+ }
274
+ }
275
+
276
+ // Upsert
277
+ if (id == null) {
278
+
279
+ // Validate for create (mainly for type validation of the create call)
280
+ if (techProviderId == null) {
281
+ console.error(`${fnName}: id is null and techProviderId is null`)
282
+ throw 'Prisma error'
283
+ }
284
+
285
+ if (status == null) {
286
+ console.error(`${fnName}: id is null and status is null`)
287
+ throw 'Prisma error'
288
+ }
289
+
290
+ if (variantName == null) {
291
+ console.error(`${fnName}: id is null and variantName is null`)
292
+ throw 'Prisma error'
293
+ }
294
+
295
+ if (resource == null) {
296
+ console.error(`${fnName}: id is null and resource is null`)
297
+ throw 'Prisma error'
298
+ }
299
+
300
+ if (model === undefined) {
301
+ console.error(`${fnName}: id is null and model is null`)
302
+ throw 'Prisma error'
303
+ }
304
+
305
+ if (protocol === undefined) {
306
+ console.error(`${fnName}: id is null and protocol is null`)
307
+ throw 'Prisma error'
308
+ }
309
+
310
+ if (pricingTier == null) {
311
+ console.error(`${fnName}: id is null and pricingTier is null`)
312
+ throw 'Prisma error'
313
+ }
314
+
315
+ if (isDefaultProvider == null) {
316
+ console.error(`${fnName}: id is null and isDefaultProvider is null`)
317
+ throw 'Prisma error'
318
+ }
319
+
320
+ if (isAdminOnly == null) {
321
+ console.error(`${fnName}: id is null and isAdminOnly is null`)
322
+ throw 'Prisma error'
323
+ }
324
+
325
+ // Create
326
+ // console.log(`${fnName}: create..`)
327
+
328
+ return await
329
+ this.create(
330
+ prisma,
331
+ techProviderId,
332
+ status,
333
+ variantName,
334
+ resource,
335
+ model,
336
+ protocol,
337
+ pricingTier,
338
+ isDefaultProvider,
339
+ isAdminOnly)
340
+ } else {
341
+
342
+ // Update
343
+ // console.log(`${fnName}: update..`)
344
+
345
+ return await
346
+ this.update(
347
+ prisma,
348
+ id,
349
+ techProviderId,
350
+ status,
351
+ variantName,
352
+ resource,
353
+ model,
354
+ protocol,
355
+ pricingTier,
356
+ isDefaultProvider,
357
+ isAdminOnly)
358
+ }
359
+ }
360
+ }