@spytecgps/nova-orm 0.0.224 → 0.0.226

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 (390) hide show
  1. package/dist/entities/acumaticaAmazonProduct.js +46 -0
  2. package/dist/entities/acumaticaImeiIccidData.js +91 -0
  3. package/dist/entities/acumaticaOrderShipmentDetails.js +61 -0
  4. package/dist/entities/acumaticaShipment.js +31 -0
  5. package/dist/entities/acumaticaShipmentAmazon.js +26 -0
  6. package/dist/entities/aempToken.js +47 -0
  7. package/dist/entities/alert.js +129 -0
  8. package/dist/entities/alertMigration.js +115 -0
  9. package/dist/entities/alertMigrationBatch.js +21 -0
  10. package/dist/entities/alertTimeWindowConfiguration.js +61 -0
  11. package/dist/entities/alertType.js +83 -0
  12. package/dist/entities/appFeatureType.js +36 -0
  13. package/dist/entities/assetCategory.js +32 -0
  14. package/dist/entities/billing.js +108 -0
  15. package/dist/entities/billingCustomerBraintree.js +62 -0
  16. package/dist/entities/billingDeviceHistory.js +61 -0
  17. package/dist/entities/billingHubspotPaymentLog.js +256 -0
  18. package/dist/entities/billingKlarnaCustomer.js +76 -0
  19. package/dist/entities/billingKlarnaOrder.js +114 -0
  20. package/dist/entities/billingStatusHistoryBraintree.js +63 -0
  21. package/dist/entities/billingSubscriptionBraintree.js +229 -0
  22. package/dist/entities/blacklist.js +51 -0
  23. package/dist/entities/blacklistType.js +31 -0
  24. package/dist/entities/boundary.js +119 -0
  25. package/dist/entities/boundaryEvent.js +105 -0
  26. package/dist/entities/cellTower.js +66 -0
  27. package/dist/entities/client.js +153 -0
  28. package/dist/entities/clientAppFeature.js +47 -0
  29. package/dist/entities/clientConfiguration.js +47 -0
  30. package/dist/entities/clientDeviceSetting.js +90 -0
  31. package/dist/entities/clientType.js +36 -0
  32. package/dist/entities/country.js +90 -0
  33. package/dist/entities/customerAttribute.js +52 -0
  34. package/dist/entities/dataSourceType.js +31 -0
  35. package/dist/entities/deactivation.js +83 -0
  36. package/dist/entities/deactivationReason.js +40 -0
  37. package/dist/entities/device.js +160 -0
  38. package/dist/entities/deviceAlertConfiguration.js +71 -0
  39. package/dist/entities/deviceBehavior.js +147 -0
  40. package/dist/entities/deviceCustomConfiguration.js +67 -0
  41. package/dist/entities/deviceHistory.js +46 -0
  42. package/dist/entities/deviceModelListener.js +46 -0
  43. package/dist/entities/devicePairing.js +67 -0
  44. package/dist/entities/devicePromotion.js +104 -0
  45. package/dist/entities/deviceReplacement.js +57 -0
  46. package/dist/entities/deviceTask.js +44 -0
  47. package/dist/entities/deviceType.js +149 -0
  48. package/dist/entities/deviceTypeEvent.js +32 -0
  49. package/dist/entities/deviceTypeFeature.js +32 -0
  50. package/dist/entities/deviceTypeFirmware.js +117 -0
  51. package/dist/entities/entityTag.js +48 -0
  52. package/dist/entities/entityType.js +31 -0
  53. package/dist/entities/event.js +36 -0
  54. package/dist/entities/feature.js +36 -0
  55. package/dist/entities/firmwareAutoUpgradeBlacklist.js +35 -0
  56. package/dist/entities/firmwareUpgradeTask.js +105 -0
  57. package/dist/entities/iccidStatus.js +49 -0
  58. package/dist/entities/imeiIccidCarrier.js +125 -0
  59. package/dist/entities/imeiIccidHistory.js +43 -0
  60. package/dist/entities/index.js +99 -0
  61. package/dist/entities/industry.js +46 -0
  62. package/dist/entities/latestPosition.js +100 -0
  63. package/dist/entities/latestPositionMigration.js +96 -0
  64. package/dist/entities/latestPositionMigrationBatch.js +21 -0
  65. package/dist/entities/magento2Gps.js +256 -0
  66. package/dist/entities/magento2Plan.js +41 -0
  67. package/dist/entities/mobileNetwork.js +51 -0
  68. package/dist/entities/notificationRecipient.js +100 -0
  69. package/dist/entities/organization.js +46 -0
  70. package/dist/entities/plan.js +86 -0
  71. package/dist/entities/position.js +102 -0
  72. package/dist/entities/positionMigration.js +96 -0
  73. package/dist/entities/positionMigrationBatch.js +21 -0
  74. package/dist/entities/promotion.js +134 -0
  75. package/dist/entities/securityRole.js +41 -0
  76. package/dist/entities/serviceProvider.js +41 -0
  77. package/dist/entities/serviceProviderProduct.js +61 -0
  78. package/dist/entities/serviceProviderProductNetwork.js +31 -0
  79. package/dist/entities/serviceProviderProductType.js +31 -0
  80. package/dist/entities/sim.js +92 -0
  81. package/dist/entities/task.js +146 -0
  82. package/dist/entities/taskSchedule.js +141 -0
  83. package/dist/entities/trip.js +127 -0
  84. package/dist/entities/tripCompletionStatus.js +36 -0
  85. package/dist/entities/tripPosition.js +26 -0
  86. package/dist/entities/user.js +196 -0
  87. package/dist/entities/userActivation.js +52 -0
  88. package/dist/entities/userActivationDevice.js +164 -0
  89. package/dist/entities/userActivationEvent.js +61 -0
  90. package/dist/entities/userActivationMetric.js +208 -0
  91. package/dist/entities/userAlertComplain.js +78 -0
  92. package/dist/entities/userAlertConfiguration.js +109 -0
  93. package/dist/entities/userAppFeedback.js +52 -0
  94. package/dist/entities/userAppIncident.js +176 -0
  95. package/dist/entities/userConfiguration.js +109 -0
  96. package/dist/entities/userDataDeletionRequest.js +56 -0
  97. package/dist/entities/userDeviceBehaviorTask.js +80 -0
  98. package/dist/entities/userInvitation.js +89 -0
  99. package/dist/entities/userRatingRequest.js +75 -0
  100. package/dist/entities/userRegistrationAttempt.js +177 -0
  101. package/dist/entities/userSecurityRole.js +33 -0
  102. package/dist/index.js +1 -2
  103. package/dist/migration/1684483704434-addLowerCaseIndex.js +16 -0
  104. package/dist/novaDataSource.js +111 -0
  105. package/dist/repositories/acumatica/getAcumaticaImeiIccidData.js +35 -0
  106. package/dist/repositories/acumatica/getAcumaticaShipmentDetails.js +50 -0
  107. package/dist/repositories/acumatica/getLastAcumaticaShipmentDetails.js +27 -0
  108. package/dist/repositories/acumatica/index.js +52 -0
  109. package/dist/repositories/aempToken/createAempToken.js +26 -0
  110. package/dist/repositories/aempToken/deleteAempTokens.js +30 -0
  111. package/dist/repositories/aempToken/getAempTokens.js +27 -0
  112. package/dist/repositories/aempToken/index.js +53 -0
  113. package/dist/repositories/alertTypes/getAlertTypes.js +13 -0
  114. package/dist/repositories/alertTypes/index.js +18 -0
  115. package/dist/repositories/alerts/createAlert.js +94 -0
  116. package/dist/repositories/alerts/createUserAlertComplain.js +26 -0
  117. package/dist/repositories/alerts/getAlertsReportByClient.js +65 -0
  118. package/dist/repositories/alerts/getAlertsReportByUser.js +127 -0
  119. package/dist/repositories/alerts/index.js +104 -0
  120. package/dist/repositories/appFeatures/createAppFeatureType.js +15 -0
  121. package/dist/repositories/appFeatures/createClientAppFeature.js +15 -0
  122. package/dist/repositories/appFeatures/getClientAppFeatures.js +39 -0
  123. package/dist/repositories/appFeatures/index.js +57 -0
  124. package/dist/repositories/assetCategories/getAssetCategories.js +8 -0
  125. package/dist/repositories/assetCategories/index.js +16 -0
  126. package/dist/repositories/baseRepository.js +9 -0
  127. package/dist/repositories/billing/createBilling.js +37 -0
  128. package/dist/repositories/billing/createBillingDeviceHistory.js +30 -0
  129. package/dist/repositories/billing/createBillingHubspotPaymentLog.js +61 -0
  130. package/dist/repositories/billing/createBillingStatusHistoryBraintree.js +32 -0
  131. package/dist/repositories/billing/getBillingCustomerBraintreeById.js +18 -0
  132. package/dist/repositories/billing/getBillingKlarnaOrderByImei.js +18 -0
  133. package/dist/repositories/billing/getBillingSubscriptionBraintreeByImei.js +18 -0
  134. package/dist/repositories/billing/getBillingSubscriptionsBraintree.js +25 -0
  135. package/dist/repositories/billing/getBillings.js +42 -0
  136. package/dist/repositories/billing/getCanceledImeis.js +84 -0
  137. package/dist/repositories/billing/getCanceledImeisMatchingMagentoData.js +100 -0
  138. package/dist/repositories/billing/getChurnStatusByClientId.js +27 -0
  139. package/dist/repositories/billing/getClientIdFromBraintreeCustomer.js +20 -0
  140. package/dist/repositories/billing/getMagentoPlan.js +21 -0
  141. package/dist/repositories/billing/getUserByBraintreeCustomerId.js +22 -0
  142. package/dist/repositories/billing/index.js +353 -0
  143. package/dist/repositories/billing/updateBilling.js +43 -0
  144. package/dist/repositories/billing/updateBillingCustomerBraintree.js +37 -0
  145. package/dist/repositories/billing/upsertBillingCustomerBraintree.js +39 -0
  146. package/dist/repositories/billing/upsertBillingKlarnaCustomer.js +52 -0
  147. package/dist/repositories/billing/upsertBillingKlarnaOrder.js +58 -0
  148. package/dist/repositories/billing/upsertBillingSubscriptionBraintree.js +20 -0
  149. package/dist/repositories/blacklist/getBlacklists.js +19 -0
  150. package/dist/repositories/blacklist/index.js +19 -0
  151. package/dist/repositories/boundaries/createBoundary.js +52 -0
  152. package/dist/repositories/boundaries/deleteBoundary.js +23 -0
  153. package/dist/repositories/boundaries/getBoundariesByClientId.js +17 -0
  154. package/dist/repositories/boundaries/getBoundariesIdsByClientId.js +19 -0
  155. package/dist/repositories/boundaries/getBoundariesReport.js +141 -0
  156. package/dist/repositories/boundaries/getBoundaryById.js +14 -0
  157. package/dist/repositories/boundaries/index.js +178 -0
  158. package/dist/repositories/boundaries/processBoundaryEvent.js +211 -0
  159. package/dist/repositories/boundaries/updateBoundary.js +53 -0
  160. package/dist/repositories/boundaries/upsertBoundaryEvent.js +23 -0
  161. package/dist/repositories/clients/createClient.js +35 -0
  162. package/dist/repositories/clients/createClientConfiguration.js +18 -0
  163. package/dist/repositories/clients/createCustomerAttribute.js +16 -0
  164. package/dist/repositories/clients/deleteClientAndConfiguration.js +25 -0
  165. package/dist/repositories/clients/getClient.js +32 -0
  166. package/dist/repositories/clients/getClientConfiguration.js +14 -0
  167. package/dist/repositories/clients/getClients.js +26 -0
  168. package/dist/repositories/clients/getCustomerAttribute.js +14 -0
  169. package/dist/repositories/clients/index.js +192 -0
  170. package/dist/repositories/clients/updateClient.js +52 -0
  171. package/dist/repositories/clients/updateClientConfiguration.js +31 -0
  172. package/dist/repositories/clients/updateCustomerAttribute.js +27 -0
  173. package/dist/repositories/countries/getCountries.js +14 -0
  174. package/dist/repositories/countries/getCountry.js +23 -0
  175. package/dist/repositories/countries/index.js +33 -0
  176. package/dist/repositories/deactivations/createDeactivation.js +16 -0
  177. package/dist/repositories/deactivations/getDeactivationReasons.js +24 -0
  178. package/dist/repositories/deactivations/getLatestDeactivationByImei.js +19 -0
  179. package/dist/repositories/deactivations/index.js +58 -0
  180. package/dist/repositories/deviceBehaviors/createDeviceBehaviorTask.js +48 -0
  181. package/dist/repositories/deviceBehaviors/getDeviceBehaviorTasks.js +40 -0
  182. package/dist/repositories/deviceBehaviors/getDeviceBehaviors.js +41 -0
  183. package/dist/repositories/deviceBehaviors/getDeviceBehaviorsByIds.js +16 -0
  184. package/dist/repositories/deviceBehaviors/getDevicesLastBehaviorTask.js +42 -0
  185. package/dist/repositories/deviceBehaviors/getLatestDeviceBehaviorTasks.js +40 -0
  186. package/dist/repositories/deviceBehaviors/index.js +147 -0
  187. package/dist/repositories/deviceBehaviors/updateDeviceBehaviorTask.js +27 -0
  188. package/dist/repositories/deviceBehaviors/upsertDeviceBehavior.js +20 -0
  189. package/dist/repositories/devicePairings/createDevicePairing.js +21 -0
  190. package/dist/repositories/devicePairings/deleteDevicePairing.js +16 -0
  191. package/dist/repositories/devicePairings/getDevicePairings.js +36 -0
  192. package/dist/repositories/devicePairings/getDevicePairingsByImei.js +20 -0
  193. package/dist/repositories/devicePairings/index.js +90 -0
  194. package/dist/repositories/devicePairings/updateDevicePairing.js +32 -0
  195. package/dist/repositories/devices/createClientDeviceSetting.js +25 -0
  196. package/dist/repositories/devices/createDevice.js +30 -0
  197. package/dist/repositories/devices/createDeviceReplacement.js +34 -0
  198. package/dist/repositories/devices/createDeviceType.js +15 -0
  199. package/dist/repositories/devices/deleteDevice.js +16 -0
  200. package/dist/repositories/devices/generateDeviceIdentifierKey.js +18 -0
  201. package/dist/repositories/devices/getCanceledDevicesWithActiveSimCards.js +40 -0
  202. package/dist/repositories/devices/getCarrierStatusUpdatedBefore.js +40 -0
  203. package/dist/repositories/devices/getClientDeviceSetting.js +20 -0
  204. package/dist/repositories/devices/getClientDeviceSettings.js +17 -0
  205. package/dist/repositories/devices/getDevice.js +33 -0
  206. package/dist/repositories/devices/getDeviceCustomConfig.js +37 -0
  207. package/dist/repositories/devices/getDeviceTypeByImei.js +18 -0
  208. package/dist/repositories/devices/getDeviceTypes.js +30 -0
  209. package/dist/repositories/devices/getDeviceTypesModelsOrderedByDeviceCount.js +27 -0
  210. package/dist/repositories/devices/getDeviceWithUsersInfo.js +59 -0
  211. package/dist/repositories/devices/getDevices.js +46 -0
  212. package/dist/repositories/devices/getFilteredImeisWithStatus.js +20 -0
  213. package/dist/repositories/devices/getIccidStatus.js +17 -0
  214. package/dist/repositories/devices/getImeiIccidCarrier.js +23 -0
  215. package/dist/repositories/devices/getImeiIccidCarriers.js +17 -0
  216. package/dist/repositories/devices/index.js +464 -0
  217. package/dist/repositories/devices/updateClientDeviceSetting.js +38 -0
  218. package/dist/repositories/devices/updateDevice.js +56 -0
  219. package/dist/repositories/devices/updateDeviceType.js +43 -0
  220. package/dist/repositories/devices/updateIccidStatus.js +28 -0
  221. package/dist/repositories/devices/updateImeiIccidCarrier.js +43 -0
  222. package/dist/repositories/devices/upsertIccidStatus.js +36 -0
  223. package/dist/repositories/firmwares/createDeviceFirmware.js +37 -0
  224. package/dist/repositories/firmwares/createFirmwareAutoUpgradeBlacklist.js +16 -0
  225. package/dist/repositories/firmwares/createFirmwareUpgradeTask.js +36 -0
  226. package/dist/repositories/firmwares/getDeviceFirmwares.js +21 -0
  227. package/dist/repositories/firmwares/getFirmwareAutoUpgradeBlacklist.js +23 -0
  228. package/dist/repositories/firmwares/getFirmwareUpgradeTasks.js +105 -0
  229. package/dist/repositories/firmwares/getFirmwareUpgradeTasksCount.js +56 -0
  230. package/dist/repositories/firmwares/index.js +194 -0
  231. package/dist/repositories/firmwares/updateDeviceFirmware.js +41 -0
  232. package/dist/repositories/firmwares/updateFirmwareUpgradeTasks.js +37 -0
  233. package/dist/repositories/index.js +31 -0
  234. package/dist/repositories/notificationRecipients/createNotificationRecipient.js +37 -0
  235. package/dist/repositories/notificationRecipients/deleteNotificationRecipients.js +26 -0
  236. package/dist/repositories/notificationRecipients/deleteNotificationRecipientsByEmailOrPhone.js +28 -0
  237. package/dist/repositories/notificationRecipients/getNotificationRecipients.js +16 -0
  238. package/dist/repositories/notificationRecipients/index.js +131 -0
  239. package/dist/repositories/notificationRecipients/updateNotificationRecipient.js +37 -0
  240. package/dist/repositories/notificationRecipients/updateUsersNotificationsUnsubscribedInfoStatus.js +98 -0
  241. package/dist/repositories/notificationRecipients/updateUsersNotificationsUnsuscribedStatus.js +35 -0
  242. package/dist/repositories/positions/createPosition.js +100 -0
  243. package/dist/repositories/positions/getLatestPositionByImei.js +26 -0
  244. package/dist/repositories/positions/getPositionsByImei.js +23 -0
  245. package/dist/repositories/positions/getPositionsReportByClient.js +87 -0
  246. package/dist/repositories/positions/index.js +101 -0
  247. package/dist/repositories/positions/upsertLatestPosition.js +41 -0
  248. package/dist/repositories/security/createUserRole.js +30 -0
  249. package/dist/repositories/security/getAllRoles.js +8 -0
  250. package/dist/repositories/security/getUserRoles.js +15 -0
  251. package/dist/repositories/security/getUserRolesByClientId.js +17 -0
  252. package/dist/repositories/security/index.js +111 -0
  253. package/dist/repositories/security/removeUserRoles.js +21 -0
  254. package/dist/repositories/security/updateUserRole.js +27 -0
  255. package/dist/repositories/security/userIsAdminOrOwner.js +20 -0
  256. package/dist/repositories/security/userIsInRole.js +18 -0
  257. package/dist/repositories/tasks/addTaskScheduleDevices.js +37 -0
  258. package/dist/repositories/tasks/completeTask.js +25 -0
  259. package/dist/repositories/tasks/createTask.js +22 -0
  260. package/dist/repositories/tasks/createTaskSchedule.js +33 -0
  261. package/dist/repositories/tasks/deleteTask.js +22 -0
  262. package/dist/repositories/tasks/deleteTaskSchedule.js +22 -0
  263. package/dist/repositories/tasks/deleteTaskScheduleDevices.js +17 -0
  264. package/dist/repositories/tasks/getDeviceTasks.js +28 -0
  265. package/dist/repositories/tasks/getTaskSchedule.js +31 -0
  266. package/dist/repositories/tasks/getTaskSchedules.js +75 -0
  267. package/dist/repositories/tasks/getTaskSchedulesCount.js +23 -0
  268. package/dist/repositories/tasks/getTasks.js +29 -0
  269. package/dist/repositories/tasks/getTasksCount.js +20 -0
  270. package/dist/repositories/tasks/index.js +441 -0
  271. package/dist/repositories/tasks/setTaskAsPastDue.js +23 -0
  272. package/dist/repositories/tasks/setTaskScheduleDevices.js +43 -0
  273. package/dist/repositories/tasks/updateTask.js +21 -0
  274. package/dist/repositories/tasks/updateTaskSchedule.js +35 -0
  275. package/dist/repositories/trips/createTrip.js +29 -0
  276. package/dist/repositories/trips/getTripById.js +15 -0
  277. package/dist/repositories/trips/getTrips.js +65 -0
  278. package/dist/repositories/trips/index.js +69 -0
  279. package/dist/repositories/trips/updateTripEndValues.js +36 -0
  280. package/dist/repositories/trips/upsertTrip.js +31 -0
  281. package/dist/repositories/userActivations/createUserActivation.js +26 -0
  282. package/dist/repositories/userActivations/createUserActivationDevice.js +35 -0
  283. package/dist/repositories/userActivations/createUserActivationEvent.js +34 -0
  284. package/dist/repositories/userActivations/createUserActivationMetric.js +28 -0
  285. package/dist/repositories/userActivations/deleteUserActivation.js +22 -0
  286. package/dist/repositories/userActivations/getLastActivationDevice.js +26 -0
  287. package/dist/repositories/userActivations/getUserActivationDevices.js +24 -0
  288. package/dist/repositories/userActivations/getUserActivationDevicesByClientId.js +26 -0
  289. package/dist/repositories/userActivations/getUserActivationMetrics.js +24 -0
  290. package/dist/repositories/userActivations/getUserActivations.js +29 -0
  291. package/dist/repositories/userActivations/index.js +229 -0
  292. package/dist/repositories/userActivations/updateUserActivationDevice.js +39 -0
  293. package/dist/repositories/userActivations/updateUserActivationMetrics.js +61 -0
  294. package/dist/repositories/userAppFeedback/createUserAppFeedback.js +26 -0
  295. package/dist/repositories/userAppFeedback/index.js +23 -0
  296. package/dist/repositories/userAppIncidents/getUserAppIncidents.js +28 -0
  297. package/dist/repositories/userAppIncidents/index.js +63 -0
  298. package/dist/repositories/userAppIncidents/upsertUserAppIncident.js +53 -0
  299. package/dist/repositories/userConfigurations/bulkCreateUserAlertConfigurations.js +46 -0
  300. package/dist/repositories/userConfigurations/createDeviceAlertTimeWindows.js +36 -0
  301. package/dist/repositories/userConfigurations/createUserAlertTimeWindows.js +33 -0
  302. package/dist/repositories/userConfigurations/createUserConfiguration.js +34 -0
  303. package/dist/repositories/userConfigurations/deleteDeviceAlertTimeWindows.js +17 -0
  304. package/dist/repositories/userConfigurations/deleteUserAlertConfigurations.js +24 -0
  305. package/dist/repositories/userConfigurations/deleteUserAlertTimeWindows.js +17 -0
  306. package/dist/repositories/userConfigurations/deleteUserConfiguration.js +23 -0
  307. package/dist/repositories/userConfigurations/getDeviceAlertTimeWindows.js +43 -0
  308. package/dist/repositories/userConfigurations/getUserAlertConfigurations.js +25 -0
  309. package/dist/repositories/userConfigurations/getUserAlertTimeWindows.js +35 -0
  310. package/dist/repositories/userConfigurations/getUserConfigurations.js +31 -0
  311. package/dist/repositories/userConfigurations/index.js +298 -0
  312. package/dist/repositories/userConfigurations/updateDeviceAlertTimeWindows.js +29 -0
  313. package/dist/repositories/userConfigurations/updateUserAlertConfigurations.js +46 -0
  314. package/dist/repositories/userConfigurations/updateUserAlertTimeWindows.js +28 -0
  315. package/dist/repositories/userConfigurations/updateUserConfiguration.js +49 -0
  316. package/dist/repositories/userDataDeletionRequests/createUserDataDeletionRequest.js +28 -0
  317. package/dist/repositories/userDataDeletionRequests/getUserDataDeletionRequest.js +29 -0
  318. package/dist/repositories/userDataDeletionRequests/index.js +66 -0
  319. package/dist/repositories/userDataDeletionRequests/removeUserDataDeletionRequest.js +17 -0
  320. package/dist/repositories/userDataDeletionRequests/updateUserDataDeletionRequest.js +38 -0
  321. package/dist/repositories/userInvitations/createUserInvitation.js +43 -0
  322. package/dist/repositories/userInvitations/getUserInvitationById.js +22 -0
  323. package/dist/repositories/userInvitations/getUserInvitations.js +31 -0
  324. package/dist/repositories/userInvitations/index.js +82 -0
  325. package/dist/repositories/userInvitations/updateUserInvitation.js +50 -0
  326. package/dist/repositories/userRatingRequests/createUserRatingRequest.js +34 -0
  327. package/dist/repositories/userRatingRequests/getUserRatingRequests.js +23 -0
  328. package/dist/repositories/userRatingRequests/index.js +41 -0
  329. package/dist/repositories/userRegistrationAttempts/createUserRegistrationAttempt.js +40 -0
  330. package/dist/repositories/userRegistrationAttempts/getUserRegistrationAttempts.js +29 -0
  331. package/dist/repositories/userRegistrationAttempts/index.js +70 -0
  332. package/dist/repositories/userRegistrationAttempts/updateUserRegistrationAttempt.js +40 -0
  333. package/dist/repositories/users/createUser.js +47 -0
  334. package/dist/repositories/users/deleteAccount.js +98 -0
  335. package/dist/repositories/users/deleteUser.js +22 -0
  336. package/dist/repositories/users/getUserById.js +22 -0
  337. package/dist/repositories/users/getUserData.js +66 -0
  338. package/dist/repositories/users/getUsers.js +49 -0
  339. package/dist/repositories/users/getUsersConfigurationByImei.js +29 -0
  340. package/dist/repositories/users/getUsersIdByPhoneAndCountryCode.js +21 -0
  341. package/dist/repositories/users/getUsersWithRoles.js +32 -0
  342. package/dist/repositories/users/index.js +195 -0
  343. package/dist/repositories/users/updateUser.js +109 -0
  344. package/dist/subscribers/allEntitiesSubscriber.js +52 -0
  345. package/dist/subscribers/index.js +2 -0
  346. package/dist/types/acumatica.js +1 -0
  347. package/dist/types/aempToken.js +1 -0
  348. package/dist/types/alert.js +1 -0
  349. package/dist/types/alertTypes.js +1 -0
  350. package/dist/types/appFeatures.js +1 -0
  351. package/dist/types/billing.js +1 -0
  352. package/dist/types/blacklist.js +1 -0
  353. package/dist/types/boundaries.js +1 -0
  354. package/dist/types/clients.js +1 -0
  355. package/dist/types/common.js +1 -0
  356. package/dist/types/countries.js +1 -0
  357. package/dist/types/deactivations.js +1 -0
  358. package/dist/types/deviceBehaviors.js +1 -0
  359. package/dist/types/devicePairings.js +1 -0
  360. package/dist/types/devices.js +1 -0
  361. package/dist/types/enums.js +74 -0
  362. package/dist/types/firmwares.js +17 -0
  363. package/dist/types/index.js +30 -0
  364. package/dist/types/logger.js +9 -0
  365. package/dist/types/notificationRecipients.js +1 -0
  366. package/dist/types/position.js +1 -0
  367. package/dist/types/security.js +1 -0
  368. package/dist/types/tasks.js +1 -0
  369. package/dist/types/trip.js +29 -0
  370. package/dist/types/user.js +1 -0
  371. package/dist/types/userActivations.js +1 -0
  372. package/dist/types/userAppFeedback.js +1 -0
  373. package/dist/types/userAppIncidents.js +1 -0
  374. package/dist/types/userConfigurations.js +1 -0
  375. package/dist/types/userDataDeletionRequests.js +1 -0
  376. package/dist/types/userInvitations.js +1 -0
  377. package/dist/types/userRatingRequests.js +1 -0
  378. package/dist/types/userRegistrationAttempts.js +1 -0
  379. package/dist/utils/anyAttributeHasValue.js +20 -0
  380. package/dist/utils/anyAttributeIsNull.js +12 -0
  381. package/dist/utils/boolToNumberTransformer.js +23 -0
  382. package/dist/utils/consoleLogger.js +42 -0
  383. package/dist/utils/filterTools.js +299 -0
  384. package/dist/utils/mapRawEntityToEntity.js +12 -0
  385. package/dist/utils/queryLogger.js +48 -0
  386. package/dist/utils/randomizer.js +39 -0
  387. package/dist/utils/stringToDateTransformer.js +16 -0
  388. package/dist/utils/uuidHelpers.js +30 -0
  389. package/package.json +10 -8
  390. package/dist/index.js.LICENSE.txt +0 -41
@@ -0,0 +1,229 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { BaseRepository } from '../baseRepository';
3
+ import { createUserActivation } from './createUserActivation';
4
+ import { createUserActivationDevice } from './createUserActivationDevice';
5
+ import { createUserActivationEvent } from './createUserActivationEvent';
6
+ import { createUserActivationMetric } from './createUserActivationMetric';
7
+ import { deleteUserActivation } from './deleteUserActivation';
8
+ import { getLastActivationDevice } from './getLastActivationDevice';
9
+ import { getUserActivationDevices } from './getUserActivationDevices';
10
+ import { getUserActivationDevicesByClientId } from './getUserActivationDevicesByClientId';
11
+ import { getUserActivationMetrics } from './getUserActivationMetrics';
12
+ import { getUserActivations } from './getUserActivations';
13
+ import { updateUserActivationDevice } from './updateUserActivationDevice';
14
+ import { updateUserActivationMetrics } from './updateUserActivationMetrics';
15
+ export class UserActivationsRepository extends BaseRepository {
16
+ /**
17
+ * Create user activation
18
+ * @param {CreateUserActivationParams} params containing information to create a user activation
19
+ * - params.id: The user activation id, optional. If not provided, it will be generated
20
+ * - params.userId: The user id, required
21
+ * - params.clientId: The client id, required
22
+ * - params.status: The status, optional. If not provided, it will be set to 'A'
23
+ * @returns The created user activation
24
+ */
25
+ async createUserActivation(params) {
26
+ this.logger.trace(params, 'UserActivationsRepository::createUserActivation started with params');
27
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
28
+ const result = await createUserActivation(novaDataSource, params, this.logger);
29
+ this.logger.trace(result, 'UserActivationsRepository::createUserActivation result');
30
+ return result;
31
+ }
32
+ /**
33
+ * Get user activations
34
+ * @param {GetUserActivationsParams} params containing information to get user activations
35
+ * Filters:
36
+ * One of the following filters is required
37
+ * - params.filters.userId: The user id, optional
38
+ * - params.filters.clientId: The client id, optional
39
+ * @returns The user activations
40
+ */
41
+ async getUserActivations(params) {
42
+ this.logger.trace(params, 'UserActivationsRepository::getUserActivations started with params');
43
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
44
+ const result = await getUserActivations(novaDataSource, params, this.logger);
45
+ this.logger.trace(result, 'UserActivationsRepository::getUserActivations result');
46
+ return result;
47
+ }
48
+ /**
49
+ * Delete user activation
50
+ * @param {DeleteUserActivationParams} params containing information to delete a user activation
51
+ * - params.userId: The user id, required
52
+ * @returns True if the user activation was deleted, false otherwise
53
+ */
54
+ async deleteUserActivation(params) {
55
+ this.logger.trace(params, 'UserActivationsRepository::deleteUserActivation started with params');
56
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
57
+ const result = await deleteUserActivation(novaDataSource, params, this.logger);
58
+ this.logger.trace({ result }, 'UserActivationsRepository::deleteUserActivation result');
59
+ return result;
60
+ }
61
+ /**
62
+ * Get user activation devices
63
+ * @param {GetUserActivationDevicesParams} params containing information to get user activation devices
64
+ * Filters:
65
+ * One of the following filters is required
66
+ * - params.filters.id: The user activation device id, optional
67
+ * - params.filters.imei: The user activation device imei, optional
68
+ * @returns The user activation devices
69
+ */
70
+ async getUserActivationDevices(params) {
71
+ this.logger.trace(params, 'UserActivationsRepository::getUserActivationDevices started with params');
72
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
73
+ const result = await getUserActivationDevices(novaDataSource, params, this.logger);
74
+ this.logger.trace(result, 'UserActivationsRepository::getUserActivationDevices result');
75
+ return result;
76
+ }
77
+ /**
78
+ * Get user activation devices by client id
79
+ * @param {GetUserActivationDevicesByClientIdParams} params containing information to get user activation devices by client id
80
+ * Filters:
81
+ * - params.filters.clientId: The client id, required
82
+ * @returns The user activation devices
83
+ */
84
+ async getUserActivationDevicesByClientId(params) {
85
+ this.logger.trace(params, 'UserActivationsRepository::getUserActivationDevicesByClientId started with params');
86
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
87
+ const result = await getUserActivationDevicesByClientId(novaDataSource, params, this.logger);
88
+ this.logger.trace(result, 'UserActivationsRepository::getUserActivationDevicesByClientId result');
89
+ return result;
90
+ }
91
+ /**
92
+ * Create user activation device
93
+ * @param {CreateUserActivationDeviceParams} params containing information to create a user activation device
94
+ * - params.id: The user activation device id, optional. If not provided, it will be generated
95
+ * - params.userActivationId: The user activation id, required
96
+ * - params.deviceId: The device id, required
97
+ * - params.imei: The device imei, required
98
+ * - params.model: The device model, optional
99
+ * - params.billingInterval: The billing interval, optional
100
+ * - params.deviceName: The device name, optional
101
+ * - params.status: The status, optional
102
+ * - params.trackingReason: The tracking reason, optional
103
+ * - params.deviceColor: The device color, optional
104
+ * - params.notificationByEmail: The notification by email, optional
105
+ * - params.notificationBySms: The notification by sms, optional
106
+ * - params.planAnnual: The plan annual, optional
107
+ * - params.dataSourceTypeId: The data source type id, optional
108
+ * - params.subscriptionId: The subscription id, optional
109
+ * - params.platform: The platform, optional
110
+ * - params.eventType: The event type, optional
111
+ * - params.planCode: The plan code, optional
112
+ * @returns The created user activation device
113
+ */
114
+ async createUserActivationDevice(params) {
115
+ this.logger.trace(params, 'UserActivationsRepository::createUserActivationDevice started with params');
116
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
117
+ const result = await createUserActivationDevice(novaDataSource, params, this.logger);
118
+ this.logger.trace(result, 'UserActivationsRepository::createUserActivationDevice result');
119
+ return result;
120
+ }
121
+ /**
122
+ * Get last activation device
123
+ * @param {GetLastActivationDeviceParams} params containing information to get last activation device
124
+ * Filters:
125
+ * - params.filters.imei: The user activation device imei, required
126
+ * Projection options:
127
+ * - params.projectionOptions.withDevice: If true, the device will be included in the result, optional
128
+ * - params.projectionOptions.withUserActivation: If true, the user activation will be included in the result, optional
129
+ * Sort options:
130
+ * - params.sortOptions.sortField: The sort field, optional. If not provided, it will be set to 'userActivationDevice.id'
131
+ * @returns The last activation device
132
+ */
133
+ async getLastActivationDevice(params) {
134
+ this.logger.trace(params, 'UserActivationsRepository::getLastActivationDevice started with params');
135
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
136
+ const result = await getLastActivationDevice(novaDataSource, params, this.logger);
137
+ this.logger.trace(result, 'UserActivationsRepository::getLastActivationDevice result');
138
+ return result;
139
+ }
140
+ /**
141
+ * Update user activation device
142
+ * @param {UpdateUserActivationDeviceParams} params containing information to update user activation device
143
+ * Filters:
144
+ * - params.filters.imei: The user activation device imei, required
145
+ * Values:
146
+ * At least one of the values is required
147
+ * - params.values.trackingReason: The tracking reason, optional
148
+ * - params.values.deviceName: The device name, optional
149
+ * - params.values.deviceColor: The device color, optional
150
+ * - params.values.planAnnual: The plan annual, optional
151
+ * - params.values.subscriptionId: The subscription id, optional
152
+ * - params.values.platform: The platform, optional
153
+ * @returns True if the user activation device was updated, false otherwise
154
+ */
155
+ async updateUserActivationDevice(params) {
156
+ this.logger.trace(params, 'UserActivationsRepository::updateUserActivationDevice started with params');
157
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
158
+ const result = await updateUserActivationDevice(novaDataSource, params, this.logger);
159
+ this.logger.trace({ result }, 'UserActivationsRepository::updateUserActivationDevice result');
160
+ return result;
161
+ }
162
+ /**
163
+ * Get user activation metrics
164
+ * @param {GetUserActivationMetricsParams} params containing information to get user activation metrics
165
+ * Filters:
166
+ * - params.filters.userId: The user id, required
167
+ * @returns The user activation metrics
168
+ */
169
+ async getUserActivationMetrics(params) {
170
+ this.logger.trace(params, 'UserActivationsRepository::getUserActivationMetrics started with params');
171
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
172
+ const result = await getUserActivationMetrics(novaDataSource, params, this.logger);
173
+ this.logger.trace(result, 'UserActivationsRepository::getUserActivationMetrics result');
174
+ return result;
175
+ }
176
+ /**
177
+ * Update user activation metrics
178
+ * @param {UpdateUserActivationMetricsParams} params containing information to update user activation metrics
179
+ * Filters:
180
+ * - params.filters.userId: The user id, required
181
+ * Values: At least one of the values is required
182
+ * @returns True if the user activation metrics were updated, false otherwise
183
+ */
184
+ async updateUserActivationMetrics(params) {
185
+ this.logger.trace(params, 'UserActivationsRepository::updateUserActivationMetrics started with params');
186
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
187
+ const result = await updateUserActivationMetrics(novaDataSource, params, this.logger);
188
+ this.logger.trace({ result }, 'UserActivationsRepository::updateUserActivationMetrics result');
189
+ return result;
190
+ }
191
+ /**
192
+ * Create user activation event
193
+ * @param {CreateUserActivationEventParams} params containing information to create a user activation event
194
+ * - params.userId: The user id, required
195
+ * - params.eventId: The event id, required
196
+ * - params.eventName: The event name, required
197
+ * - params.eventValue: The event value, optional
198
+ * - params.eventMetadata: The event metadata, optional
199
+ * - params.platform: The platform, optional
200
+ * - params.ip: The ip, optional
201
+ * - params.userAgent: The user agent, optional
202
+ * @returns The created user activation event
203
+ */
204
+ async createUserActivationEvent(params) {
205
+ this.logger.trace(params, 'UserActivationsRepository::createUserActivationEvent started with params');
206
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
207
+ const result = await createUserActivationEvent(novaDataSource, params, this.logger);
208
+ this.logger.trace(result, 'UserActivationsRepository::createUserActivationEvent result');
209
+ return result;
210
+ }
211
+ /**
212
+ * Create user activation metric
213
+ * @param {CreateUserActivationMetricParams} params containing information to create a user activation metric
214
+ * - params.id: The user activation metric id, optional. If not provided, it will be generated
215
+ * - params.userId: The user id, required
216
+ * - params.firstName: The first name, required
217
+ * - params.lastName: The last name, required
218
+ * - params.email: The email, required
219
+ * - params.phone: The phone, optional
220
+ * @returns The created user activation metric
221
+ */
222
+ async createUserActivationMetric(params) {
223
+ this.logger.trace(params, 'UserActivationsRepository::createUserActivationMetric started with params');
224
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
225
+ const result = await createUserActivationMetric(novaDataSource, params, this.logger);
226
+ this.logger.trace(result, 'UserActivationsRepository::createUserActivationMetric result');
227
+ return result;
228
+ }
229
+ }
@@ -0,0 +1,39 @@
1
+ import { UserActivationDevice } from '../../entities';
2
+ export const updateUserActivationDevice = async (novaDataSource, params, logger) => {
3
+ // at least one filter is required
4
+ if (!params?.filters?.imei && !params?.filters?.id) {
5
+ logger.warn({ params }, 'UserActivationsRepository::updateUserActivationDevice - missing required parameters');
6
+ return false;
7
+ }
8
+ // at least one field to update is required
9
+ if (!params?.values?.trackingReason &&
10
+ !params?.values?.deviceName &&
11
+ !params?.values?.deviceColor &&
12
+ params?.values?.planAnnual == null &&
13
+ !params?.values?.subscriptionId &&
14
+ !params?.values?.platform &&
15
+ !params?.values?.model &&
16
+ !params?.values?.servicePlan) {
17
+ logger.warn({ params }, 'UserActivationsRepository::updateUserActivationDevice - missing required parameters');
18
+ return false;
19
+ }
20
+ return novaDataSource.safeQuery(async (dataSource) => {
21
+ const userActivationDevicessRepository = dataSource.getRepository(UserActivationDevice);
22
+ const now = new Date();
23
+ let queryBuilder = userActivationDevicessRepository
24
+ .createQueryBuilder()
25
+ .update(UserActivationDevice)
26
+ .set({
27
+ ...params.values,
28
+ modifiedAt: now,
29
+ });
30
+ if (params.filters.imei) {
31
+ queryBuilder = queryBuilder.where('imei = :imei', { imei: params.filters.imei });
32
+ }
33
+ if (params.filters.id) {
34
+ queryBuilder = queryBuilder.andWhere('id = :id', { id: params.filters.id });
35
+ }
36
+ const result = await queryBuilder.execute();
37
+ return result.affected > 0;
38
+ }, 'UserActivationsRepository::updateUserActivationDevice');
39
+ };
@@ -0,0 +1,61 @@
1
+ import { UserActivationMetric } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const updateUserActivationMetrics = async (novaDataSource, params, logger) => {
4
+ const binaryBuffer = uuidStringToBinaryBuffer(params?.filters?.userId);
5
+ // at least one filter is required
6
+ if (!binaryBuffer) {
7
+ logger.warn({ params }, 'UserActivationsRepository::UpdateUserActivationMetrics - missing required parameters');
8
+ return false;
9
+ }
10
+ // at least one field to update is required
11
+ if (!params?.values?.firstName &&
12
+ !params?.values?.lastName &&
13
+ !params?.values?.email &&
14
+ !params?.values?.phone &&
15
+ !params?.values?.trackingReason &&
16
+ !params?.values?.companyName &&
17
+ !params?.values?.role &&
18
+ !params?.values?.industry &&
19
+ !params?.values?.devicesActivatingCategory &&
20
+ !params?.values?.assetsCountRange &&
21
+ !params?.values?.devicesActivatingCount &&
22
+ !params?.values?.plan &&
23
+ !params?.values?.usersInvitedCount &&
24
+ params?.values?.meetingScheduled == null &&
25
+ !params?.values?.planAnnual &&
26
+ !params?.values?.planId &&
27
+ !params?.values?.spyEnvironment &&
28
+ !params?.values?.jarvisScore &&
29
+ !params?.values?.enrichmentCompanyDescription &&
30
+ !params?.values?.jarvisEnrichmentCompanyEin &&
31
+ !params?.values?.enrichmentCompanyEmployees &&
32
+ !params?.values?.enrichmentCompanyIndustry &&
33
+ !params?.values?.enrichmentCompanyLocation &&
34
+ !params?.values?.enrichmentCompanyName &&
35
+ !params?.values?.enrichmentCompanyRevenue &&
36
+ !params?.values?.enrichmentPrivateDomain &&
37
+ !params?.values?.enrichmentPublicTicker &&
38
+ !params?.values?.enrichmentRole &&
39
+ !params?.values?.enrichmentTags &&
40
+ !params?.values?.jenrichmentTitle &&
41
+ !params?.values?.enrichmentVerifiedEmployment) {
42
+ logger.warn({ params }, 'UserActivationsRepository::UpdateUserActivationMetrics - missing required parameters');
43
+ return false;
44
+ }
45
+ return novaDataSource.safeQuery(async (dataSource) => {
46
+ const userActivationMetricsRepository = dataSource.getRepository(UserActivationMetric);
47
+ const now = new Date();
48
+ let queryBuilder = userActivationMetricsRepository
49
+ .createQueryBuilder()
50
+ .update(UserActivationMetric)
51
+ .set({
52
+ ...params.values,
53
+ modifiedAt: now,
54
+ });
55
+ if (binaryBuffer) {
56
+ queryBuilder = queryBuilder.andWhere('userId = :userId', { userId: binaryBuffer });
57
+ }
58
+ const result = await queryBuilder.execute();
59
+ return result.affected > 0;
60
+ }, 'UserActivationsRepository::UpdateUserActivationMetrics');
61
+ };
@@ -0,0 +1,26 @@
1
+ import { UserAppFeedback } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const createUserAppFeedback = async (novaDataSource, params, logger) => {
4
+ if (!params?.userId || !params?.platform || !params?.appVersion) {
5
+ logger.warn({ params }, 'UserAppFeedbackRepository::createUserAppFeedback - missing required parameters');
6
+ return null;
7
+ }
8
+ const userIdBinaryBuffer = uuidStringToBinaryBuffer(params?.userId);
9
+ if (!userIdBinaryBuffer?.length) {
10
+ logger.warn({ userId: params?.userId }, 'UserAppFeedbackRepository::createUserAppFeedback - user id should be a valid UUID');
11
+ return null;
12
+ }
13
+ return novaDataSource.safeQuery(async (dataSource) => {
14
+ const userAppFeedbackRepository = dataSource.getRepository(UserAppFeedback);
15
+ const newUserAppFeedback = {
16
+ id: params.id,
17
+ userId: userIdBinaryBuffer,
18
+ platform: params.platform,
19
+ appVersion: params.appVersion,
20
+ feedback: params.feedback,
21
+ amazonReviewDate: params.amazonReviewDate,
22
+ createdAt: new Date(),
23
+ };
24
+ return await userAppFeedbackRepository.save(newUserAppFeedback);
25
+ }, 'UserAppFeedbackRepository::createUserAppFeedback');
26
+ };
@@ -0,0 +1,23 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { BaseRepository } from '../baseRepository';
3
+ import { createUserAppFeedback } from './createUserAppFeedback';
4
+ export class UserAppFeedbackRepository extends BaseRepository {
5
+ /**
6
+ * Creates a new user app feedback record
7
+ * @param {CreateUserAppFeedbackParams} params containing information to create a user app feedback record
8
+ * - params.id: The user app feedback id, optional
9
+ * - params.userId: The user id, required
10
+ * - params.platform: The platform, required
11
+ * - params.appVersion: The app version, required
12
+ * - params.feedback: The feedback, optional
13
+ * - params.amazonReviewDate: The amazon review date, optional
14
+ * @returns The created user app feedback record
15
+ */
16
+ async createUserAppFeedback(params) {
17
+ this.logger.trace(params, 'UserAppFeedbackRepository::createUserAppFeedback started with params');
18
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
19
+ const result = await createUserAppFeedback(novaDataSource, params, this.logger);
20
+ this.logger.trace(result, 'UserAppFeedbackRepository::createUserAppFeedback result');
21
+ return result;
22
+ }
23
+ }
@@ -0,0 +1,28 @@
1
+ import { UserAppIncident } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const getUserAppIncidents = async (novaDataSource, params, logger) => {
4
+ if (!params?.filters?.userId) {
5
+ logger.warn({ params }, 'UserAppIncidentsRepository::getUserAppIncidents - missing required parameters');
6
+ return [];
7
+ }
8
+ const userIdBinaryBuffer = uuidStringToBinaryBuffer(params.filters.userId);
9
+ if (!userIdBinaryBuffer?.length) {
10
+ logger.warn({ params }, 'UserAppIncidentsRepository::getUserAppIncidents - userId is not a valid UUID');
11
+ return [];
12
+ }
13
+ return novaDataSource.safeQuery(async (dataSource) => {
14
+ const userAppIncidentsRepository = dataSource.getRepository(UserAppIncident);
15
+ const queryBuilder = userAppIncidentsRepository
16
+ .createQueryBuilder('userAppIncident')
17
+ .where('userAppIncident.userId = :userId', {
18
+ userId: userIdBinaryBuffer,
19
+ })
20
+ .andWhere('userAppIncident.createdAt between :createdFrom and :createdTo', {
21
+ createdFrom: params.filters.createdFrom,
22
+ createdTo: params.filters.createdTo,
23
+ })
24
+ .orderBy('userAppIncident.createdAt', 'DESC');
25
+ const result = await queryBuilder.getMany();
26
+ return result;
27
+ }, 'UserAppIncidentsRepository::getUserAppIncidents');
28
+ };
@@ -0,0 +1,63 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { BaseRepository } from '../baseRepository';
3
+ import { getUserAppIncidents } from './getUserAppIncidents';
4
+ import { upsertUserAppIncident } from './upsertUserAppIncident';
5
+ export class UserAppIncidentsRepository extends BaseRepository {
6
+ /**
7
+ * Get user app incidents
8
+ * @param {GetUserAppIncidentsParams} params containing information to get user app incidents
9
+ * Filters:
10
+ * filters.userId: user id, required
11
+ * filters.createdFrom: created from date, required
12
+ * filters.createdTo: created to date, required
13
+ * @returns {Promise<UserAppIncident[]>} user app incidents
14
+ */
15
+ async getUserAppIncidents(params) {
16
+ this.logger.trace(params, 'UserAppIncidentsRepository::getUserAppIncidents started with params');
17
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
18
+ const result = await getUserAppIncidents(novaDataSource, params, this.logger);
19
+ this.logger.trace(result, 'UserAppIncidentsRepository::getUserAppIncidents result');
20
+ return result;
21
+ }
22
+ /**
23
+ * Upsert user app incident
24
+ * @param {UpsertUserAppIncidentParams} params containing information to insert or update an user app incident
25
+ * If no user app incident exist with the same user id and error id, a new user app incident will be inserted.
26
+ * Otherwise, the existing user app incident will be updated.
27
+ * Filters:
28
+ * params.id: user app incident id, optional. If not provided, a new id will be generated.
29
+ * params.userId: user id, required
30
+ * params.deviceOs: device os, required
31
+ * params.stage: stage, required
32
+ * params.appVersion: app version, required
33
+ * params.errorId: error id, required
34
+ * params.userName: user name, optional
35
+ * params.userEmail: user email, optional
36
+ * params.deviceManufacturer: device manufacturer, optional
37
+ * params.deviceModel: device model, optional
38
+ * params.appVersion: app version, optional
39
+ * params.errorMessage: error message, optional
40
+ * params.errorFirstReceivedAt: when the error was first received, optional
41
+ * params.errorReceivedAt: when the error was received, optional
42
+ * params.deviceJailbroken: whether the device is jailbroken, optional
43
+ * params.deviceOsVersion: device os version, optional
44
+ * params.deviceFreeMemory: device free memory, optional
45
+ * params.deviceTotalMemory: device total memory, optional
46
+ * params.deviceCharging: whether the device is charging, optional
47
+ * params.deviceBatteryLevel: device battery level, optional
48
+ * params.deviceNetworkAccess: device network access, optional
49
+ * params.appActiveScreen: app active screen, optional
50
+ * params.appInForeground: whether the app is in foreground, optional
51
+ * params.appDurationInForeground: app duration in foreground, optional
52
+ * params.appBundleId: app bundle id, optional
53
+ * params.incidentUrl: incident url, optional
54
+ * @returns {Promise<boolean>} true if user app incident was upserted, false otherwise
55
+ */
56
+ async upsertUserAppIncident(params) {
57
+ this.logger.trace(params, 'UserAppIncidentsRepository::upsertUserAppIncident started with params');
58
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
59
+ const result = await upsertUserAppIncident(novaDataSource, params, this.logger);
60
+ this.logger.trace({ result }, 'UserAppIncidentsRepository::upsertUserAppIncident result');
61
+ return result;
62
+ }
63
+ }
@@ -0,0 +1,53 @@
1
+ import { UserAppIncident } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const upsertUserAppIncident = async (novaDataSource, params, logger) => {
4
+ if (!params?.userId ||
5
+ !params.deviceOs ||
6
+ !params.stage ||
7
+ !params.appVersion ||
8
+ !params?.errorId) {
9
+ logger.warn({ params }, 'UserAppIncidentsRepository::upsertUserAppIncident - missing required parameters');
10
+ return false;
11
+ }
12
+ const binaryBuffer = uuidStringToBinaryBuffer(params?.userId);
13
+ if (!binaryBuffer?.length) {
14
+ logger.warn({ params }, 'UserAppIncidentsRepository::upsertUserAppIncident - user id should be a valid UUID');
15
+ return null;
16
+ }
17
+ return novaDataSource.safeQuery(async (dataSource) => {
18
+ const userAppIncidentsRepository = dataSource.getRepository(UserAppIncident);
19
+ const now = new Date();
20
+ const userAppIncident = {
21
+ id: params.id,
22
+ userId: binaryBuffer,
23
+ userName: params.userName,
24
+ userEmail: params.userEmail,
25
+ deviceOs: params.deviceOs,
26
+ deviceManufacturer: params.deviceManufacturer,
27
+ deviceModel: params.deviceModel,
28
+ stage: params.stage,
29
+ appVersion: params.appVersion,
30
+ errorMessage: params.errorMessage,
31
+ errorFirstReceivedAt: params.errorFirstReceivedAt,
32
+ errorReceivedAt: params.errorReceivedAt,
33
+ deviceJailbroken: params.deviceJailbroken,
34
+ deviceOsVersion: params.deviceOsVersion,
35
+ deviceFreeMemory: params.deviceFreeMemory,
36
+ deviceTotalMemory: params.deviceTotalMemory,
37
+ deviceCharging: params.deviceCharging,
38
+ deviceBatteryLevel: params.deviceBatteryLevel,
39
+ deviceNetworkAccess: params.deviceNetworkAccess,
40
+ appActiveScreen: params.appActiveScreen,
41
+ appInForeground: params.appInForeground,
42
+ appDurationInForeground: params.appDurationInForeground,
43
+ appBundleId: params.appBundleId,
44
+ incidentUrl: params.incidentUrl,
45
+ errorId: params.errorId,
46
+ createdAt: now,
47
+ };
48
+ const result = await userAppIncidentsRepository.upsert(userAppIncident, {
49
+ conflictPaths: ['userId', 'errorId'],
50
+ });
51
+ return result?.raw?.affectedRows > 0;
52
+ }, 'UserAppIncidentsRepository::upsertUserAppIncident');
53
+ };
@@ -0,0 +1,46 @@
1
+ import { UserAlertConfiguration } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const bulkCreateUserAlertConfigurations = async (novaDataSource, params, logger) => {
4
+ if (!params?.alertConfigurations?.length) {
5
+ logger.warn({ params }, 'UserConfigurationsRepository::bulkCreateUserAlertConfigurations - missing required parameters');
6
+ return false;
7
+ }
8
+ return novaDataSource.safeQuery(async (dataSource) => {
9
+ const userAlertConfigurationsRepository = dataSource.getRepository(UserAlertConfiguration);
10
+ const userAlertConfigurationsToCreate = [];
11
+ for (const createUserAlertConfigurationParams of params.alertConfigurations) {
12
+ if (!createUserAlertConfigurationParams?.userId ||
13
+ !createUserAlertConfigurationParams?.alertTypeId) {
14
+ logger.warn(createUserAlertConfigurationParams, 'UserConfigurationsRepository::bulkCreateUserAlertConfigurations - User alert configuration could not be created: missing required parameters');
15
+ return false;
16
+ }
17
+ const userIdBinaryBuffer = uuidStringToBinaryBuffer(createUserAlertConfigurationParams?.userId);
18
+ if (!userIdBinaryBuffer?.length) {
19
+ logger.warn(createUserAlertConfigurationParams, 'UserConfigurationsRepository::bulkCreateUserAlertConfigurations - User alert configuration could not be created: user id should be a valid UUID');
20
+ return false;
21
+ }
22
+ const newUserAlertConfiguration = {
23
+ id: createUserAlertConfigurationParams?.id,
24
+ userId: userIdBinaryBuffer,
25
+ alertTypeId: createUserAlertConfigurationParams?.alertTypeId,
26
+ smsNotification: createUserAlertConfigurationParams?.smsNotification,
27
+ emailNotification: createUserAlertConfigurationParams?.emailNotification,
28
+ appNotification: createUserAlertConfigurationParams?.appNotification,
29
+ pushNotification: createUserAlertConfigurationParams?.pushNotification,
30
+ alertValue: createUserAlertConfigurationParams?.alertValue,
31
+ alertMetadata: createUserAlertConfigurationParams?.alertMetadata,
32
+ };
33
+ userAlertConfigurationsToCreate.push(newUserAlertConfiguration);
34
+ }
35
+ if (!userAlertConfigurationsToCreate.length) {
36
+ return false;
37
+ }
38
+ const result = await userAlertConfigurationsRepository
39
+ .createQueryBuilder()
40
+ .insert()
41
+ .into(UserAlertConfiguration)
42
+ .values(userAlertConfigurationsToCreate)
43
+ .execute();
44
+ return result.identifiers.length === userAlertConfigurationsToCreate.length;
45
+ }, 'UserConfigurationsRepository::bulkCreateUserAlertConfigurations');
46
+ };
@@ -0,0 +1,36 @@
1
+ import { DeviceAlertConfiguration } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const createDeviceAlertTimeWindows = async (novaDataSource, params, logger) => {
4
+ if (!params?.userId ||
5
+ !params?.clientId ||
6
+ !params?.alertTypeId ||
7
+ !params?.daysOfTheWeek ||
8
+ !params.startTime ||
9
+ !params.endTime ||
10
+ !params.imei) {
11
+ logger.warn({ params }, 'UserConfigurationsRepository::createDeviceAlertTimeWindows - missing required parameters');
12
+ return null;
13
+ }
14
+ const userIdBinaryBuffer = uuidStringToBinaryBuffer(params?.userId);
15
+ if (!userIdBinaryBuffer?.length) {
16
+ logger.warn({ params }, 'UserConfigurationsRepository::createDeviceAlertTimeWindows - user id should be a valid UUID');
17
+ return null;
18
+ }
19
+ return novaDataSource.safeQuery(async (dataSource) => {
20
+ const userConfigurationsRepository = dataSource.getRepository(DeviceAlertConfiguration);
21
+ const newAlertTimeWindowsConfig = {
22
+ id: params?.id ?? null,
23
+ alertTypeId: params?.alertTypeId,
24
+ clientId: params?.clientId,
25
+ userId: userIdBinaryBuffer,
26
+ daysOfTheWeek: params?.daysOfTheWeek,
27
+ startTime: params?.startTime,
28
+ endTime: params?.endTime,
29
+ alertConfigurationId: params?.alertConfigurationId ?? null,
30
+ filter: params?.filter ?? null,
31
+ imei: params?.imei,
32
+ label: params?.label ?? null,
33
+ };
34
+ return await userConfigurationsRepository.save(newAlertTimeWindowsConfig);
35
+ }, 'UserConfigurationsRepository::createDeviceAlertTimeWindows');
36
+ };
@@ -0,0 +1,33 @@
1
+ import { AlertTimeWindowConfiguration } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const createUserAlertTimeWindows = async (novaDataSource, params, logger) => {
4
+ if (!params?.userId ||
5
+ !params?.clientId ||
6
+ !params?.alertTypeId ||
7
+ !params?.daysOfTheWeek ||
8
+ !params.startTime ||
9
+ !params.endTime) {
10
+ logger.warn({ params }, 'UserConfigurationsRepository::createUserAlertTimeWindows - missing required parameters');
11
+ return null;
12
+ }
13
+ const userIdBinaryBuffer = uuidStringToBinaryBuffer(params?.userId);
14
+ if (!userIdBinaryBuffer?.length) {
15
+ logger.warn({ params }, 'UserConfigurationsRepository::createUserAlertTimeWindows - user id should be a valid UUID');
16
+ return null;
17
+ }
18
+ return novaDataSource.safeQuery(async (dataSource) => {
19
+ const userConfigurationsRepository = dataSource.getRepository(AlertTimeWindowConfiguration);
20
+ const newAlertTimeWindowsConfig = {
21
+ id: params?.id ?? null,
22
+ alertId: params?.alertTypeId,
23
+ clientId: params?.clientId,
24
+ userId: userIdBinaryBuffer,
25
+ daysOfTheWeek: params?.daysOfTheWeek,
26
+ startTime: params?.startTime,
27
+ endTime: params?.endTime,
28
+ alertConfigurationId: params?.alertConfigurationId ?? null,
29
+ label: params?.label ?? null,
30
+ };
31
+ return await userConfigurationsRepository.save(newAlertTimeWindowsConfig);
32
+ }, 'UserConfigurationsRepository::createUserAlertTimeWindows');
33
+ };