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,523 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ChatMessageModel = void 0;
13
+ const encrypt_service_1 = require("../../services/access/encrypt-service");
14
+ const errors_1 = require("../../types/errors");
15
+ class ChatMessageModel {
16
+ // Code
17
+ constructor(encryptionKey) {
18
+ // Consts
19
+ this.clName = 'ChatMessageModel';
20
+ this.msPerMinute = 60000;
21
+ this.encrypter = new encrypt_service_1.Encrypter(encryptionKey);
22
+ }
23
+ countMessages(prisma, userProfileId, startDate, sentByAi) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ // Debug
26
+ const fnName = `${this.clName}.countMessages()`;
27
+ // Query
28
+ const count = yield prisma.chatMessage.count({
29
+ where: {
30
+ sentByAi: sentByAi,
31
+ chatSession: {
32
+ createdById: userProfileId,
33
+ },
34
+ created: {
35
+ gte: startDate,
36
+ },
37
+ },
38
+ });
39
+ // Return
40
+ return count;
41
+ });
42
+ }
43
+ create(prisma, id, chatSession, replyToId, fromUserProfileId, fromChatParticipantId, toChatParticipantId, externalId, sentByAi, message) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ // Debug
46
+ const fnName = `${this.clName}.create()`;
47
+ // Validate
48
+ if (chatSession == null) {
49
+ throw new errors_1.CustomError(`${fnName}: chatMessage == null`);
50
+ }
51
+ // Encrypt the message if required
52
+ if (chatSession.isEncryptedAtRest === true) {
53
+ message = this.encrypter.encrypt(message);
54
+ }
55
+ // Create record
56
+ var chatMessage = undefined;
57
+ try {
58
+ chatMessage = yield prisma.chatMessage.create({
59
+ data: {
60
+ id: id,
61
+ chatSessionId: chatSession.id,
62
+ replyToId: replyToId,
63
+ fromChatParticipantId: fromChatParticipantId,
64
+ toChatParticipantId: toChatParticipantId,
65
+ externalId: externalId,
66
+ sentByAi: sentByAi,
67
+ message: message
68
+ }
69
+ });
70
+ }
71
+ catch (error) {
72
+ console.error(`${fnName}: error: ${error}`);
73
+ throw 'Prisma error';
74
+ }
75
+ // Return
76
+ return chatMessage;
77
+ });
78
+ }
79
+ deleteByChatSessionId(prisma, chatSessionId) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ // Debug
82
+ const fnName = `${this.clName}.deleteByChatSessionId()`;
83
+ // Delete records
84
+ try {
85
+ yield prisma.chatMessage.deleteMany({
86
+ where: {
87
+ chatSessionId: chatSessionId
88
+ }
89
+ });
90
+ }
91
+ catch (error) {
92
+ console.error(`${fnName}: error: ${error}`);
93
+ throw 'Prisma error';
94
+ }
95
+ });
96
+ }
97
+ deleteById(prisma, id) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ // Debug
100
+ const fnName = `${this.clName}.deleteById()`;
101
+ // Delete record
102
+ try {
103
+ yield prisma.chatMessage.delete({
104
+ where: {
105
+ id: id
106
+ }
107
+ });
108
+ }
109
+ catch (error) {
110
+ console.error(`${fnName}: error: ${error}`);
111
+ throw 'Prisma error';
112
+ }
113
+ });
114
+ }
115
+ getById(prisma, id, chatSession) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ // Debug
118
+ const fnName = `${this.clName}.getById()`;
119
+ // Validate
120
+ if (chatSession == null) {
121
+ throw new errors_1.CustomError(`${fnName}: chatMessage == null`);
122
+ }
123
+ // Query record
124
+ var chatMessage = undefined;
125
+ try {
126
+ chatMessage = yield prisma.chatMessage.findUnique({
127
+ where: {
128
+ id: id
129
+ }
130
+ });
131
+ }
132
+ catch (error) {
133
+ if (!(error instanceof error.NotFound)) {
134
+ console.error(`${fnName}: error: ${error}`);
135
+ throw 'Prisma error';
136
+ }
137
+ }
138
+ // Decrypt message if required
139
+ if (chatSession.isEncryptedAtRest === true) {
140
+ chatMessage.message = this.encrypter.decrypt(chatMessage.message);
141
+ }
142
+ // Return OK
143
+ return chatMessage;
144
+ });
145
+ }
146
+ getByChatSessionId(prisma, chatSession, maxPrevMessages) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ // Debug
149
+ const fnName = `${this.clName}.getByChatSessionId()`;
150
+ // Validate
151
+ if (chatSession == null) {
152
+ console.error(`${fnName}: chatSessionId == null`);
153
+ throw 'Prisma error';
154
+ }
155
+ if (chatSession.id == null) {
156
+ console.error(`${fnName}: chatSession.id == null`);
157
+ throw 'Prisma error';
158
+ }
159
+ // Query records
160
+ var chatMessages = [];
161
+ if (maxPrevMessages == null) {
162
+ // No max prev messages; get all messages
163
+ try {
164
+ chatMessages = yield prisma.chatMessage.findMany({
165
+ where: {
166
+ chatSessionId: chatSession.id
167
+ },
168
+ orderBy: [
169
+ {
170
+ created: 'asc'
171
+ }
172
+ ]
173
+ });
174
+ }
175
+ catch (error) {
176
+ console.error(`${fnName}: error: ${error}`);
177
+ throw 'Prisma error';
178
+ }
179
+ }
180
+ else {
181
+ // Limit by max prev messages
182
+ try {
183
+ chatMessages = yield prisma.chatMessage.findMany({
184
+ take: maxPrevMessages,
185
+ where: {
186
+ chatSessionId: chatSession.id
187
+ },
188
+ orderBy: [
189
+ {
190
+ created: 'desc'
191
+ }
192
+ ]
193
+ });
194
+ }
195
+ catch (error) {
196
+ console.error(`${fnName}: error: ${error}`);
197
+ throw 'Prisma error';
198
+ }
199
+ chatMessages.reverse();
200
+ }
201
+ // Decrypts message if required
202
+ if (chatSession.isEncryptedAtRest === true) {
203
+ for (const chatMessage of chatMessages) {
204
+ chatMessage.message = this.encrypter.decrypt(chatMessage.message);
205
+ }
206
+ }
207
+ // Return
208
+ return chatMessages;
209
+ });
210
+ }
211
+ getByChatSessionAndExternalId(prisma, chatSession, externalId) {
212
+ return __awaiter(this, void 0, void 0, function* () {
213
+ // Debug
214
+ const fnName = `${this.clName}.getByChatSessionIdAndExternalId()`;
215
+ // Validate
216
+ if (chatSession == null) {
217
+ throw new errors_1.CustomError(`${fnName}: chatSessionId == null`);
218
+ }
219
+ if (externalId == null) {
220
+ throw new errors_1.CustomError(`${fnName}: externalId == null`);
221
+ }
222
+ // Query record
223
+ var chatMessage = undefined;
224
+ try {
225
+ chatMessage = yield prisma.chatMessage.findFirst({
226
+ where: {
227
+ chatSessionId: chatSession.id,
228
+ externalId: externalId
229
+ }
230
+ });
231
+ }
232
+ catch (error) {
233
+ if (!(error instanceof error.NotFound)) {
234
+ console.error(`${fnName}: error: ${error}`);
235
+ throw 'Prisma error';
236
+ }
237
+ }
238
+ // Decrypt message if required
239
+ if (chatSession.isEncryptedAtRest === true) {
240
+ chatMessage.message = this.encrypter.decrypt(chatMessage.message);
241
+ }
242
+ // Return OK
243
+ return chatMessage;
244
+ });
245
+ }
246
+ getByLastMessageId(prisma, chatSession, lastMessageId) {
247
+ return __awaiter(this, void 0, void 0, function* () {
248
+ // Debug
249
+ const fnName = `${this.clName}.getByLastMessageId()`;
250
+ // Validate
251
+ if (chatSession == null) {
252
+ throw new errors_1.CustomError(`${fnName}: chatMessage == null`);
253
+ }
254
+ // Get the last message if specified
255
+ var lastMessageCreated = new Date();
256
+ if (lastMessageId != null) {
257
+ const lastMessage = yield this.getById(prisma, lastMessageId, chatSession);
258
+ if (lastMessage != null) {
259
+ lastMessageCreated = lastMessage.created;
260
+ }
261
+ }
262
+ // Query records
263
+ var chatMessages = [];
264
+ try {
265
+ chatMessages = yield prisma.chatMessage.findMany({
266
+ where: {
267
+ chatSessionId: chatSession.id,
268
+ created: {
269
+ gt: lastMessageCreated
270
+ }
271
+ },
272
+ orderBy: [
273
+ {
274
+ created: 'asc'
275
+ }
276
+ ]
277
+ });
278
+ }
279
+ catch (error) {
280
+ if (!(error instanceof error.NotFound)) {
281
+ console.error(`${fnName}: error: ${error}`);
282
+ throw 'Prisma error';
283
+ }
284
+ }
285
+ // Decrypts message if required
286
+ if (chatSession.isEncryptedAtRest === true) {
287
+ for (const chatMessage of chatMessages) {
288
+ chatMessage.message = this.encrypter.decrypt(chatMessage.message);
289
+ }
290
+ }
291
+ // Return
292
+ return chatMessages;
293
+ });
294
+ }
295
+ getEarliestUnread(prisma, chatSession) {
296
+ return __awaiter(this, void 0, void 0, function* () {
297
+ // Debug
298
+ const fnName = `${this.clName}.getEarliestUnread()`;
299
+ // Validate
300
+ if (chatSession == null) {
301
+ throw new errors_1.CustomError(`${fnName}: chatMessage == null`);
302
+ }
303
+ // Query record
304
+ var chatMessage = undefined;
305
+ try {
306
+ chatMessage = yield prisma.chatMessage.findFirst({
307
+ where: {
308
+ chatSessionId: chatSession.id,
309
+ sentByAi: true
310
+ },
311
+ orderBy: [
312
+ {
313
+ created: 'desc'
314
+ }
315
+ ]
316
+ });
317
+ }
318
+ catch (error) {
319
+ if (!(error instanceof error.NotFound)) {
320
+ console.error(`${fnName}: error: ${error}`);
321
+ throw 'Prisma error';
322
+ }
323
+ }
324
+ // Decrypt message if required
325
+ if (chatSession.isEncryptedAtRest === true) {
326
+ chatMessage.message = this.encrypter.decrypt(chatMessage.message);
327
+ }
328
+ // Return OK
329
+ return chatMessage;
330
+ });
331
+ }
332
+ getFirst(prisma, chatSession) {
333
+ return __awaiter(this, void 0, void 0, function* () {
334
+ // Debug
335
+ const fnName = `${this.clName}.getFirst()`;
336
+ // Validate
337
+ if (chatSession == null) {
338
+ throw new errors_1.CustomError(`${fnName}: chatMessage == null`);
339
+ }
340
+ // Query record
341
+ var chatMessage = undefined;
342
+ try {
343
+ chatMessage = yield prisma.chatMessage.findFirst({
344
+ where: {
345
+ chatSessionId: chatSession.id
346
+ },
347
+ orderBy: [
348
+ {
349
+ created: 'asc'
350
+ }
351
+ ]
352
+ });
353
+ }
354
+ catch (error) {
355
+ if (!(error instanceof error.NotFound)) {
356
+ console.error(`${fnName}: error: ${error}`);
357
+ throw 'Prisma error';
358
+ }
359
+ }
360
+ // Decrypt message if required
361
+ if (chatSession.isEncryptedAtRest === true) {
362
+ chatMessage.message = this.encrypter.decrypt(chatMessage.message);
363
+ }
364
+ // Return OK
365
+ return chatMessage;
366
+ });
367
+ }
368
+ getLast(prisma, chatSession) {
369
+ return __awaiter(this, void 0, void 0, function* () {
370
+ // Debug
371
+ const fnName = `${this.clName}.getLast()`;
372
+ // Validate
373
+ if (chatSession == null) {
374
+ throw new errors_1.CustomError(`${fnName}: chatMessage == null`);
375
+ }
376
+ // Query record
377
+ var chatMessage = undefined;
378
+ try {
379
+ chatMessage = yield prisma.chatMessage.findFirst({
380
+ where: {
381
+ chatSessionId: chatSession.id
382
+ },
383
+ orderBy: [
384
+ {
385
+ created: 'desc'
386
+ }
387
+ ]
388
+ });
389
+ }
390
+ catch (error) {
391
+ if (!(error instanceof error.NotFound)) {
392
+ console.error(`${fnName}: error: ${error}`);
393
+ throw 'Prisma error';
394
+ }
395
+ }
396
+ // Decrypt message if required
397
+ if (chatSession.isEncryptedAtRest === true) {
398
+ chatMessage.message = this.encrypter.decrypt(chatMessage.message);
399
+ }
400
+ // Return OK
401
+ return chatMessage;
402
+ });
403
+ }
404
+ setExternalId(prisma, id, externalId) {
405
+ return __awaiter(this, void 0, void 0, function* () {
406
+ // Debug
407
+ const fnName = `${this.clName}.setExternalId()`;
408
+ // Validate
409
+ if (id == null) {
410
+ throw new errors_1.CustomError(`${fnName}: id == null`);
411
+ }
412
+ if (externalId === undefined) {
413
+ throw new errors_1.CustomError(`${fnName}: externalId == null`);
414
+ }
415
+ // Update record
416
+ try {
417
+ return yield prisma.chatMessage.update({
418
+ data: {
419
+ externalId: externalId
420
+ },
421
+ where: {
422
+ id: id
423
+ }
424
+ });
425
+ }
426
+ catch (error) {
427
+ // Don't fail, this can happen due to a unique constraint violation in
428
+ // some valid scenarios.
429
+ // Trying to handle the specific Prisma error code didn't work
430
+ console.warn(`${fnName}: warning: ` + JSON.stringify(error));
431
+ return null;
432
+ }
433
+ });
434
+ }
435
+ update(prisma, id, chatSession, replyToId, fromChatParticipantId, toChatParticipantId, externalId, sentByAi, message) {
436
+ return __awaiter(this, void 0, void 0, function* () {
437
+ // Debug
438
+ const fnName = `${this.clName}.update()`;
439
+ // Validate
440
+ if (chatSession == null) {
441
+ throw new errors_1.CustomError(`${fnName}: chatMessage == null`);
442
+ }
443
+ // Encrypt the message if required
444
+ if (message != null &&
445
+ chatSession.isEncryptedAtRest === true) {
446
+ message = this.encrypter.encrypt(message);
447
+ }
448
+ // Update record
449
+ try {
450
+ return yield prisma.chatMessage.update({
451
+ data: {
452
+ chatSessionId: chatSession.id,
453
+ replyToId: replyToId,
454
+ fromChatParticipantId: fromChatParticipantId,
455
+ toChatParticipantId: toChatParticipantId,
456
+ externalId: externalId,
457
+ sentByAi: sentByAi,
458
+ message: message
459
+ },
460
+ where: {
461
+ id: id
462
+ }
463
+ });
464
+ }
465
+ catch (error) {
466
+ console.error(`${fnName}: error: ${error}`);
467
+ throw 'Prisma error';
468
+ }
469
+ });
470
+ }
471
+ upsert(prisma, id, chatSession, replyToId, fromUserProfileId, fromChatParticipantId, toChatParticipantId, externalId, sentByAi, message) {
472
+ return __awaiter(this, void 0, void 0, function* () {
473
+ // Debug
474
+ const fnName = `${this.clName}.upsert()`;
475
+ // If the id is specified, try to get it
476
+ if (id != null) {
477
+ const chatMessage = yield this.getById(prisma, id, chatSession);
478
+ if (chatMessage != null) {
479
+ id = chatMessage.id;
480
+ }
481
+ }
482
+ // Upsert
483
+ if (id == null) {
484
+ // Validate for create (mainly for type validation of the create call)
485
+ if (replyToId === undefined) {
486
+ console.error(`${fnName}: id is null and replyToId is undefined`);
487
+ throw 'Prisma error';
488
+ }
489
+ if (fromUserProfileId == null) {
490
+ console.error(`${fnName}: id is null and fromUserProfileId is null`);
491
+ throw 'Prisma error';
492
+ }
493
+ if (fromChatParticipantId === undefined) {
494
+ console.error(`${fnName}: id is null and fromChatParticipantId is undefined`);
495
+ throw 'Prisma error';
496
+ }
497
+ if (toChatParticipantId === undefined) {
498
+ console.error(`${fnName}: id is null and toChatParticipantId is undefined`);
499
+ throw 'Prisma error';
500
+ }
501
+ if (externalId === undefined) {
502
+ console.error(`${fnName}: id is null and externalId is undefined`);
503
+ throw 'Prisma error';
504
+ }
505
+ if (sentByAi === undefined) {
506
+ console.error(`${fnName}: id is null and sentByAi is undefined`);
507
+ throw 'Prisma error';
508
+ }
509
+ if (message === undefined) {
510
+ console.error(`${fnName}: id is null and message is undefined`);
511
+ throw 'Prisma error';
512
+ }
513
+ // Create
514
+ return yield this.create(prisma, id, chatSession, replyToId, fromUserProfileId, fromChatParticipantId, toChatParticipantId, externalId, sentByAi, message);
515
+ }
516
+ else {
517
+ // Update
518
+ return yield this.update(prisma, id, chatSession, replyToId, fromChatParticipantId, toChatParticipantId, externalId, sentByAi, message);
519
+ }
520
+ });
521
+ }
522
+ }
523
+ exports.ChatMessageModel = ChatMessageModel;
@@ -0,0 +1,39 @@
1
+ import { PrismaClient } from '@prisma/client';
2
+ import { UsersService } from '../../services/users/service';
3
+ export declare class ChatParticipantModel {
4
+ clName: string;
5
+ usersService: UsersService;
6
+ create(prisma: PrismaClient, id: string | undefined, chatSessionId: string, userProfileId: string): Promise<{
7
+ id: string;
8
+ userProfileId: string;
9
+ chatSessionId: string;
10
+ }>;
11
+ deleteByChatSessionId(prisma: PrismaClient, chatSessionId: string): Promise<void>;
12
+ getById(prisma: PrismaClient, id: string): Promise<any>;
13
+ getByChatSessionId(prisma: PrismaClient, chatSessionId: string): Promise<{
14
+ id: string;
15
+ userProfileId: string;
16
+ chatSessionId: string;
17
+ }[] | undefined>;
18
+ getByChatSessionIdAndOwnerType(prisma: PrismaClient, chatSessionId: string, ownerType: string): Promise<{
19
+ id: string;
20
+ userProfileId: string;
21
+ chatSessionId: string;
22
+ } | null | undefined>;
23
+ getByChatSessionIdAndUserProfileId(prisma: PrismaClient, chatSessionId: string, userProfileId: string): Promise<{
24
+ id: string;
25
+ userProfileId: string;
26
+ chatSessionId: string;
27
+ } | null | undefined>;
28
+ getParticipantTypeByUserProfileId(prisma: PrismaClient, userProfileId: string): Promise<string | null>;
29
+ update(prisma: PrismaClient, id: string, chatSessionId: string, userProfileId: string): Promise<{
30
+ id: string;
31
+ userProfileId: string;
32
+ chatSessionId: string;
33
+ }>;
34
+ upsert(prisma: PrismaClient, id: string | undefined, chatSessionId: string, userProfileId: string): Promise<{
35
+ id: string;
36
+ userProfileId: string;
37
+ chatSessionId: string;
38
+ }>;
39
+ }