dt-common-device 11.2.0 → 11.2.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 (229) hide show
  1. package/dist/admin/Admin.repository.d.ts +7 -0
  2. package/dist/admin/Admin.repository.js +182 -0
  3. package/dist/admin/Admin.service.d.ts +5 -0
  4. package/dist/admin/Admin.service.js +17 -0
  5. package/dist/admin/index.d.ts +1 -0
  6. package/dist/admin/index.js +17 -0
  7. package/dist/audit/AuditProperties.d.ts +16 -0
  8. package/dist/audit/AuditProperties.js +2 -0
  9. package/dist/chronicle/Cronicle.service.d.ts +2 -6
  10. package/dist/chronicle/Cronicle.service.js +2 -19
  11. package/dist/chronicle/IChronicle.interface.d.ts +14 -0
  12. package/dist/chronicle/IChronicle.interface.js +2 -0
  13. package/dist/chronicle/ICronicle.interface.d.ts +0 -1
  14. package/dist/chronicle/chronicle.service.d.ts +4 -0
  15. package/dist/chronicle/chronicle.service.js +44 -0
  16. package/dist/connection/Connection.repository.d.ts +8 -0
  17. package/dist/connection/Connection.repository.js +92 -0
  18. package/dist/connection/Connection.service.d.ts +8 -0
  19. package/dist/connection/Connection.service.js +32 -0
  20. package/dist/connection/IConnection.d.ts +28 -0
  21. package/dist/connection/IConnection.js +16 -0
  22. package/dist/connection/index.d.ts +2 -0
  23. package/dist/connection/index.js +18 -0
  24. package/dist/constants/ConnectionProviders.d.ts +1 -0
  25. package/dist/constants/ConnectionProviders.js +1 -0
  26. package/dist/copilotQueue/examples/CopilotQueue.example.d.ts +37 -0
  27. package/dist/copilotQueue/examples/CopilotQueue.example.js +140 -0
  28. package/dist/copilotQueue/examples/index.d.ts +1 -0
  29. package/dist/copilotQueue/examples/index.js +17 -0
  30. package/dist/device/cloud/entities/CloudConnection.d.ts +6 -0
  31. package/dist/device/cloud/entities/CloudConnection.js +6 -0
  32. package/dist/device/cloud/entities/CloudDevice.d.ts +16 -0
  33. package/dist/device/cloud/entities/CloudDevice.js +26 -0
  34. package/dist/device/cloud/entities/CloudDeviceService.d.ts +5 -0
  35. package/dist/device/cloud/entities/CloudDeviceService.js +9 -0
  36. package/dist/device/cloud/entities/DeviceFactory.d.ts +7 -0
  37. package/dist/device/cloud/entities/DeviceFactory.js +80 -0
  38. package/dist/device/cloud/entities/index.d.ts +3 -0
  39. package/dist/device/cloud/entities/index.js +19 -0
  40. package/dist/device/cloud/interface.d.ts +101 -0
  41. package/dist/device/cloud/interface.js +3 -0
  42. package/dist/device/cloud/interfaces/ICloudConnection.d.ts +5 -0
  43. package/dist/device/cloud/interfaces/ICloudConnection.js +2 -0
  44. package/dist/device/cloud/interfaces/ICloudDevice.d.ts +9 -0
  45. package/dist/device/cloud/interfaces/ICloudDevice.js +2 -0
  46. package/dist/device/cloud/interfaces/ICloudDeviceService.d.ts +4 -0
  47. package/dist/device/cloud/interfaces/ICloudDeviceService.js +2 -0
  48. package/dist/device/cloud/interfaces/IConnectionService.d.ts +7 -0
  49. package/dist/device/cloud/interfaces/IConnectionService.js +2 -0
  50. package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +7 -0
  51. package/dist/device/cloud/interfaces/IDeviceConnectionService.js +3 -0
  52. package/dist/device/cloud/interfaces/IDeviceFactory.d.ts +4 -0
  53. package/dist/device/cloud/interfaces/IDeviceFactory.js +2 -0
  54. package/dist/device/cloud/interfaces/IDeviceService.d.ts +8 -0
  55. package/dist/device/cloud/interfaces/IDeviceService.js +2 -0
  56. package/dist/device/cloud/interfaces/IDevicesService.d.ts +9 -0
  57. package/dist/device/cloud/interfaces/IDevicesService.js +2 -0
  58. package/dist/device/cloud/interfaces/IHubService.d.ts +5 -0
  59. package/dist/device/cloud/interfaces/IHubService.js +2 -0
  60. package/dist/device/cloud/interfaces/IRawDataTransformer.d.ts +4 -0
  61. package/dist/device/cloud/interfaces/IRawDataTransformer.js +2 -0
  62. package/dist/device/cloud/interfaces/IRawDevice.d.ts +17 -0
  63. package/dist/device/cloud/interfaces/IRawDevice.js +11 -0
  64. package/dist/device/cloud/interfaces/index.d.ts +5 -0
  65. package/dist/device/cloud/interfaces/index.js +21 -0
  66. package/dist/device/cloud/services/CloudDevice.service.d.ts +5 -0
  67. package/dist/device/cloud/services/CloudDevice.service.js +9 -0
  68. package/dist/device/cloud/services/Connection.service.d.ts +8 -0
  69. package/dist/device/cloud/services/Connection.service.js +6 -0
  70. package/dist/device/cloud/services/Device.service.d.ts +39 -0
  71. package/dist/device/cloud/services/Device.service.js +9 -0
  72. package/dist/device/cloud/services/DeviceCloudService.d.ts +42 -0
  73. package/dist/device/cloud/services/DeviceCloudService.js +59 -0
  74. package/dist/device/cloud/services/DeviceHub.service.d.ts +3 -0
  75. package/dist/device/cloud/services/DeviceHub.service.js +6 -0
  76. package/dist/device/cloud/services/Hub.service.d.ts +25 -0
  77. package/dist/device/cloud/services/Hub.service.js +9 -0
  78. package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +38 -0
  79. package/dist/device/cloud/services/SmartThingsDeviceService.js +52 -0
  80. package/dist/device/cloud/services/index.d.ts +2 -0
  81. package/dist/device/cloud/services/index.js +18 -0
  82. package/dist/device/cloud/types.d.ts +52 -0
  83. package/dist/device/cloud/types.js +15 -0
  84. package/dist/device/index.d.ts +4 -0
  85. package/dist/device/index.js +20 -0
  86. package/dist/device/local/entities/AlertBuilder.d.ts +87 -0
  87. package/dist/device/local/entities/AlertBuilder.example.d.ts +11 -0
  88. package/dist/device/local/entities/AlertBuilder.example.js +117 -0
  89. package/dist/device/local/entities/AlertBuilder.js +179 -0
  90. package/dist/device/local/entities/IssueBuilder.d.ts +109 -0
  91. package/dist/device/local/entities/IssueBuilder.example.d.ts +16 -0
  92. package/dist/device/local/entities/IssueBuilder.example.js +196 -0
  93. package/dist/device/local/entities/IssueBuilder.js +237 -0
  94. package/dist/device/local/entities/index.d.ts +2 -0
  95. package/dist/device/local/entities/index.js +7 -0
  96. package/dist/device/local/events/EventHandler.d.ts +11 -0
  97. package/dist/device/local/events/EventHandler.js +86 -0
  98. package/dist/device/local/events/Events.d.ts +54 -0
  99. package/dist/device/local/events/Events.js +57 -0
  100. package/dist/device/local/events/index.d.ts +2 -0
  101. package/dist/device/local/events/index.js +7 -0
  102. package/dist/device/local/handler/EventHandler.d.ts +7 -0
  103. package/dist/device/local/handler/EventHandler.js +44 -0
  104. package/dist/device/local/interface.d.ts +0 -0
  105. package/dist/device/local/interface.js +1 -0
  106. package/dist/device/local/interfaces/IConnection.d.ts +26 -0
  107. package/dist/device/local/interfaces/IConnection.js +14 -0
  108. package/dist/device/local/interfaces/IDevice.d.ts +68 -0
  109. package/dist/device/local/interfaces/IDevice.js +10 -0
  110. package/dist/device/local/interfaces/IDtDevice.d.ts +16 -0
  111. package/dist/device/local/interfaces/IDtDevice.js +2 -0
  112. package/dist/device/local/interfaces/IHub.d.ts +46 -0
  113. package/dist/device/local/interfaces/IHub.js +2 -0
  114. package/dist/device/local/interfaces/IProperty.d.ts +29 -0
  115. package/dist/device/local/interfaces/IProperty.js +2 -0
  116. package/dist/device/local/interfaces/ISchedule.d.ts +25 -0
  117. package/dist/device/local/interfaces/ISchedule.js +2 -0
  118. package/dist/device/local/interfaces/index.d.ts +3 -0
  119. package/dist/device/local/interfaces/index.js +19 -0
  120. package/dist/device/local/models/Alert.model.d.ts +28 -0
  121. package/dist/device/local/models/Alert.model.js +222 -0
  122. package/dist/device/local/models/Issue.model.d.ts +28 -0
  123. package/dist/device/local/models/Issue.model.js +260 -0
  124. package/dist/device/local/repository/Alert.repository.d.ts +106 -0
  125. package/dist/device/local/repository/Alert.repository.js +374 -0
  126. package/dist/device/local/repository/Connection.repository.d.ts +8 -0
  127. package/dist/device/local/repository/Connection.repository.js +92 -0
  128. package/dist/device/local/repository/Device.repository.d.ts +30 -0
  129. package/dist/device/local/repository/Device.repository.js +325 -0
  130. package/dist/device/local/repository/Hub.repository.d.ts +13 -0
  131. package/dist/device/local/repository/Hub.repository.js +139 -0
  132. package/dist/device/local/repository/Issue.repository.d.ts +113 -0
  133. package/dist/device/local/repository/Issue.repository.js +401 -0
  134. package/dist/device/local/repository/Property.repository.d.ts +8 -0
  135. package/dist/device/local/repository/Property.repository.js +95 -0
  136. package/dist/device/local/repository/Schedule.repository.d.ts +9 -0
  137. package/dist/device/local/repository/Schedule.repository.js +109 -0
  138. package/dist/device/local/services/Alert.service.d.ts +137 -0
  139. package/dist/device/local/services/Alert.service.js +475 -0
  140. package/dist/device/local/services/AlertService.example.d.ts +55 -0
  141. package/dist/device/local/services/AlertService.example.js +148 -0
  142. package/dist/device/local/services/Connection.service.d.ts +8 -0
  143. package/dist/device/local/services/Connection.service.js +32 -0
  144. package/dist/device/local/services/Device.service.d.ts +40 -0
  145. package/dist/device/local/services/Device.service.js +391 -0
  146. package/dist/device/local/services/DeviceHub.service.d.ts +11 -0
  147. package/dist/device/local/services/DeviceHub.service.js +40 -0
  148. package/dist/device/local/services/Hub.service.d.ts +12 -0
  149. package/dist/device/local/services/Hub.service.js +107 -0
  150. package/dist/device/local/services/Issue.service.d.ts +168 -0
  151. package/dist/device/local/services/Issue.service.js +642 -0
  152. package/dist/device/local/services/IssueService.example.d.ts +68 -0
  153. package/dist/device/local/services/IssueService.example.js +177 -0
  154. package/dist/device/local/services/Property.service.d.ts +8 -0
  155. package/dist/device/local/services/Property.service.js +36 -0
  156. package/dist/device/local/services/Schedule.service.d.ts +9 -0
  157. package/dist/device/local/services/Schedule.service.js +26 -0
  158. package/dist/device/local/services/index.d.ts +3 -0
  159. package/dist/device/local/services/index.js +19 -0
  160. package/dist/entities/accessGroup/AccessGroup.repository.d.ts +1 -2
  161. package/dist/entities/accessGroup/AccessGroup.repository.js +1 -4
  162. package/dist/entities/accessGroup/AccessGroup.service.d.ts +1 -2
  163. package/dist/entities/accessGroup/AccessGroup.service.js +3 -4
  164. package/dist/entities/guest/Guest.repository.d.ts +1 -1
  165. package/dist/entities/guest/Guest.repository.js +2 -5
  166. package/dist/entities/guest/Guest.service.d.ts +1 -1
  167. package/dist/entities/guest/Guest.service.js +1 -4
  168. package/dist/entities/schedules/Schedule.repository.d.ts +1 -1
  169. package/dist/entities/schedules/Schedule.repository.js +2 -5
  170. package/dist/entities/schedules/Schedule.service.d.ts +1 -1
  171. package/dist/entities/schedules/Schedule.service.js +1 -4
  172. package/dist/entities/user/User.repository.js +1 -4
  173. package/dist/entities/user/User.service.d.ts +1 -1
  174. package/dist/entities/user/User.service.js +1 -4
  175. package/dist/entities/zone/Zone.service.js +1 -4
  176. package/dist/pms/IPms.d.ts +6 -0
  177. package/dist/pms/IPms.js +10 -0
  178. package/dist/pms/index.d.ts +1 -0
  179. package/dist/pms/index.js +18 -0
  180. package/dist/pms/webhookQueue/examples/index.d.ts +2 -0
  181. package/dist/pms/webhookQueue/examples/index.js +18 -0
  182. package/dist/pms/webhookQueue/examples/pms-integration.d.ts +65 -0
  183. package/dist/pms/webhookQueue/examples/pms-integration.js +254 -0
  184. package/dist/pms/webhookQueue/examples/usage.d.ts +7 -0
  185. package/dist/pms/webhookQueue/examples/usage.js +175 -0
  186. package/dist/pms/webhookQueue/index.d.ts +3 -0
  187. package/dist/pms/webhookQueue/index.js +20 -0
  188. package/dist/pms/webhookQueue/interfaces/IWebhookQueue.d.ts +33 -0
  189. package/dist/pms/webhookQueue/interfaces/IWebhookQueue.js +2 -0
  190. package/dist/pms/webhookQueue/interfaces/IWebhookWorker.d.ts +38 -0
  191. package/dist/pms/webhookQueue/interfaces/IWebhookWorker.js +2 -0
  192. package/dist/pms/webhookQueue/interfaces/index.d.ts +1 -0
  193. package/dist/pms/webhookQueue/interfaces/index.js +17 -0
  194. package/dist/pms/webhookQueue/services/WebhookQueueFactory.d.ts +38 -0
  195. package/dist/pms/webhookQueue/services/WebhookQueueFactory.js +131 -0
  196. package/dist/pms/webhookQueue/services/WebhookQueueIntegration.d.ts +70 -0
  197. package/dist/pms/webhookQueue/services/WebhookQueueIntegration.js +207 -0
  198. package/dist/pms/webhookQueue/services/WebhookQueueService.d.ts +45 -0
  199. package/dist/pms/webhookQueue/services/WebhookQueueService.js +270 -0
  200. package/dist/pms/webhookQueue/services/WebhookWorker.d.ts +37 -0
  201. package/dist/pms/webhookQueue/services/WebhookWorker.js +201 -0
  202. package/dist/pms/webhookQueue/services/index.d.ts +1 -0
  203. package/dist/pms/webhookQueue/services/index.js +17 -0
  204. package/dist/pms/webhookQueue/types/index.d.ts +1 -0
  205. package/dist/pms/webhookQueue/types/index.js +17 -0
  206. package/dist/pms/webhookQueue/types/webhook.types.d.ts +39 -0
  207. package/dist/pms/webhookQueue/types/webhook.types.js +2 -0
  208. package/dist/property/IProperty.d.ts +29 -0
  209. package/dist/property/IProperty.js +2 -0
  210. package/dist/property/Property.repository.d.ts +8 -0
  211. package/dist/property/Property.repository.js +109 -0
  212. package/dist/property/Property.service.d.ts +8 -0
  213. package/dist/property/Property.service.js +124 -0
  214. package/dist/property/index.d.ts +2 -0
  215. package/dist/property/index.js +18 -0
  216. package/dist/queue/interfaces/IHttpRequestJob.d.ts +9 -0
  217. package/dist/queue/interfaces/IHttpRequestJob.js +2 -0
  218. package/dist/queue/utils/rateLimit.utils.js +6 -0
  219. package/dist/types/alert.types.d.ts +57 -0
  220. package/dist/types/alert.types.js +22 -0
  221. package/dist/types/config.types.d.ts +19 -0
  222. package/dist/types/config.types.js +2 -0
  223. package/dist/types/index.d.ts +3 -0
  224. package/dist/types/index.js +19 -0
  225. package/dist/types/issue.types.d.ts +90 -0
  226. package/dist/types/issue.types.js +40 -0
  227. package/dist/utils/http-utils.d.ts +13 -0
  228. package/dist/utils/http-utils.js +117 -0
  229. package/package.json +1 -1
@@ -0,0 +1,106 @@
1
+ import { IAlertDocument } from "../models/Alert.model";
2
+ import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity, EntityType } from "../../../types/alert.types";
3
+ export declare class AlertRepository {
4
+ /**
5
+ * Create a new alert
6
+ */
7
+ create(alertData: CreateAlertData): Promise<IAlertDocument>;
8
+ /**
9
+ * Find alert by ID
10
+ */
11
+ findById(id: string, includeDeleted?: boolean): Promise<IAlertDocument | null>;
12
+ /**
13
+ * Find all alerts with filters
14
+ */
15
+ findAll(filters?: {
16
+ propertyId?: string;
17
+ category?: AlertCategory;
18
+ severity?: AlertSeverity;
19
+ entityType?: EntityType;
20
+ entityId?: string;
21
+ isActive?: boolean;
22
+ isRead?: boolean;
23
+ includeDeleted?: boolean;
24
+ limit?: number;
25
+ skip?: number;
26
+ sort?: {
27
+ [key: string]: 1 | -1;
28
+ };
29
+ }): Promise<IAlertDocument[]>;
30
+ /**
31
+ * Update an alert
32
+ */
33
+ update(id: string, updateData: UpdateAlertData): Promise<IAlertDocument | null>;
34
+ /**
35
+ * Soft delete an alert
36
+ */
37
+ softDelete(id: string, deletedBy: string): Promise<boolean>;
38
+ /**
39
+ * Permanently delete an alert
40
+ */
41
+ hardDelete(id: string): Promise<boolean>;
42
+ /**
43
+ * Count alerts with filters
44
+ */
45
+ count(filters?: {
46
+ propertyId?: string;
47
+ category?: AlertCategory;
48
+ severity?: AlertSeverity;
49
+ entityType?: EntityType;
50
+ entityId?: string;
51
+ isActive?: boolean;
52
+ isRead?: boolean;
53
+ includeDeleted?: boolean;
54
+ }): Promise<number>;
55
+ /**
56
+ * Find alerts by property
57
+ */
58
+ findByProperty(propertyId: string, includeDeleted?: boolean): Promise<IAlertDocument[]>;
59
+ /**
60
+ * Find alerts by entity
61
+ */
62
+ findByEntity(entityId: string, entityType: EntityType, includeDeleted?: boolean): Promise<IAlertDocument[]>;
63
+ /**
64
+ * Find alerts by category
65
+ */
66
+ findByCategory(category: AlertCategory, includeDeleted?: boolean): Promise<IAlertDocument[]>;
67
+ /**
68
+ * Find alerts by severity
69
+ */
70
+ findBySeverity(severity: AlertSeverity, includeDeleted?: boolean): Promise<IAlertDocument[]>;
71
+ /**
72
+ * Find active alerts
73
+ */
74
+ findActive(includeDeleted?: boolean): Promise<IAlertDocument[]>;
75
+ /**
76
+ * Find unread alerts
77
+ */
78
+ findUnread(includeDeleted?: boolean): Promise<IAlertDocument[]>;
79
+ /**
80
+ * Find snoozed alerts
81
+ */
82
+ findSnoozed(includeDeleted?: boolean): Promise<IAlertDocument[]>;
83
+ /**
84
+ * Find expired snooze alerts
85
+ */
86
+ findExpiredSnooze(includeDeleted?: boolean): Promise<IAlertDocument[]>;
87
+ /**
88
+ * Get alert statistics
89
+ */
90
+ getStatistics(propertyId?: string): Promise<{
91
+ total: number;
92
+ active: number;
93
+ unread: number;
94
+ snoozed: number;
95
+ bySeverity: Record<AlertSeverity, number>;
96
+ byCategory: Record<AlertCategory, number>;
97
+ }>;
98
+ /**
99
+ * Bulk update alerts
100
+ */
101
+ bulkUpdate(ids: string[], updateData: Partial<UpdateAlertData>): Promise<number>;
102
+ /**
103
+ * Bulk soft delete alerts
104
+ */
105
+ bulkSoftDelete(ids: string[], deletedBy: string): Promise<number>;
106
+ }
@@ -0,0 +1,374 @@
1
+ "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
37
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
38
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.AlertRepository = void 0;
42
+ const typedi_1 = require("typedi");
43
+ const Alert_model_1 = require("../models/Alert.model");
44
+ const alert_types_1 = require("../../../types/alert.types");
45
+ let AlertRepository = (() => {
46
+ let _classDecorators = [(0, typedi_1.Service)()];
47
+ let _classDescriptor;
48
+ let _classExtraInitializers = [];
49
+ let _classThis;
50
+ var AlertRepository = _classThis = class {
51
+ /**
52
+ * Create a new alert
53
+ */
54
+ async create(alertData) {
55
+ try {
56
+ const alert = new Alert_model_1.AlertModel({
57
+ ...alertData,
58
+ severity: alertData.severity || alert_types_1.AlertSeverity.MEDIUM,
59
+ isRead: false,
60
+ isActive: true,
61
+ isDeleted: false,
62
+ });
63
+ return await alert.save();
64
+ }
65
+ catch (error) {
66
+ throw new Error(`Failed to create alert: ${error instanceof Error ? error.message : "Unknown error"}`);
67
+ }
68
+ }
69
+ /**
70
+ * Find alert by ID
71
+ */
72
+ async findById(id, includeDeleted = false) {
73
+ try {
74
+ const query = { _id: id };
75
+ if (!includeDeleted) {
76
+ query.isDeleted = false;
77
+ }
78
+ return await Alert_model_1.AlertModel.findOne(query);
79
+ }
80
+ catch (error) {
81
+ throw new Error(`Failed to find alert by ID: ${error instanceof Error ? error.message : "Unknown error"}`);
82
+ }
83
+ }
84
+ /**
85
+ * Find all alerts with filters
86
+ */
87
+ async findAll(filters = {}) {
88
+ try {
89
+ const query = {};
90
+ if (filters.propertyId)
91
+ query.propertyId = filters.propertyId;
92
+ if (filters.category)
93
+ query.category = filters.category;
94
+ if (filters.severity)
95
+ query.severity = filters.severity;
96
+ if (filters.entityType)
97
+ query.entityType = filters.entityType;
98
+ if (filters.entityId)
99
+ query.entityId = filters.entityId;
100
+ if (filters.isActive !== undefined)
101
+ query.isActive = filters.isActive;
102
+ if (filters.isRead !== undefined)
103
+ query.isRead = filters.isRead;
104
+ if (!filters.includeDeleted)
105
+ query.isDeleted = false;
106
+ const queryBuilder = Alert_model_1.AlertModel.find(query);
107
+ if (filters.sort) {
108
+ queryBuilder.sort(filters.sort);
109
+ }
110
+ else {
111
+ queryBuilder.sort({ severity: -1, createdAt: -1 });
112
+ }
113
+ if (filters.skip)
114
+ queryBuilder.skip(filters.skip);
115
+ if (filters.limit)
116
+ queryBuilder.limit(filters.limit);
117
+ return await queryBuilder.exec();
118
+ }
119
+ catch (error) {
120
+ throw new Error(`Failed to find alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
121
+ }
122
+ }
123
+ /**
124
+ * Update an alert
125
+ */
126
+ async update(id, updateData) {
127
+ try {
128
+ return await Alert_model_1.AlertModel.findByIdAndUpdate(id, { ...updateData, updatedAt: new Date() }, { new: true, runValidators: true });
129
+ }
130
+ catch (error) {
131
+ throw new Error(`Failed to update alert: ${error instanceof Error ? error.message : "Unknown error"}`);
132
+ }
133
+ }
134
+ /**
135
+ * Soft delete an alert
136
+ */
137
+ async softDelete(id, deletedBy) {
138
+ try {
139
+ const result = await Alert_model_1.AlertModel.findByIdAndUpdate(id, {
140
+ isDeleted: true,
141
+ updatedBy: deletedBy,
142
+ updatedAt: new Date(),
143
+ });
144
+ return !!result;
145
+ }
146
+ catch (error) {
147
+ throw new Error(`Failed to soft delete alert: ${error instanceof Error ? error.message : "Unknown error"}`);
148
+ }
149
+ }
150
+ /**
151
+ * Permanently delete an alert
152
+ */
153
+ async hardDelete(id) {
154
+ try {
155
+ const result = await Alert_model_1.AlertModel.findByIdAndDelete(id);
156
+ return !!result;
157
+ }
158
+ catch (error) {
159
+ throw new Error(`Failed to permanently delete alert: ${error instanceof Error ? error.message : "Unknown error"}`);
160
+ }
161
+ }
162
+ /**
163
+ * Count alerts with filters
164
+ */
165
+ async count(filters = {}) {
166
+ try {
167
+ const query = {};
168
+ if (filters.propertyId)
169
+ query.propertyId = filters.propertyId;
170
+ if (filters.category)
171
+ query.category = filters.category;
172
+ if (filters.severity)
173
+ query.severity = filters.severity;
174
+ if (filters.entityType)
175
+ query.entityType = filters.entityType;
176
+ if (filters.entityId)
177
+ query.entityId = filters.entityId;
178
+ if (filters.isActive !== undefined)
179
+ query.isActive = filters.isActive;
180
+ if (filters.isRead !== undefined)
181
+ query.isRead = filters.isRead;
182
+ if (!filters.includeDeleted)
183
+ query.isDeleted = false;
184
+ return await Alert_model_1.AlertModel.countDocuments(query);
185
+ }
186
+ catch (error) {
187
+ throw new Error(`Failed to count alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
188
+ }
189
+ }
190
+ /**
191
+ * Find alerts by property
192
+ */
193
+ async findByProperty(propertyId, includeDeleted = false) {
194
+ try {
195
+ return await Alert_model_1.AlertModel.findByProperty(propertyId, includeDeleted);
196
+ }
197
+ catch (error) {
198
+ throw new Error(`Failed to find alerts by property: ${error instanceof Error ? error.message : "Unknown error"}`);
199
+ }
200
+ }
201
+ /**
202
+ * Find alerts by entity
203
+ */
204
+ async findByEntity(entityId, entityType, includeDeleted = false) {
205
+ try {
206
+ return await Alert_model_1.AlertModel.findByEntity(entityId, entityType, includeDeleted);
207
+ }
208
+ catch (error) {
209
+ throw new Error(`Failed to find alerts by entity: ${error instanceof Error ? error.message : "Unknown error"}`);
210
+ }
211
+ }
212
+ /**
213
+ * Find alerts by category
214
+ */
215
+ async findByCategory(category, includeDeleted = false) {
216
+ try {
217
+ return await Alert_model_1.AlertModel.findByCategory(category, includeDeleted);
218
+ }
219
+ catch (error) {
220
+ throw new Error(`Failed to find alerts by category: ${error instanceof Error ? error.message : "Unknown error"}`);
221
+ }
222
+ }
223
+ /**
224
+ * Find alerts by severity
225
+ */
226
+ async findBySeverity(severity, includeDeleted = false) {
227
+ try {
228
+ return await Alert_model_1.AlertModel.findBySeverity(severity, includeDeleted);
229
+ }
230
+ catch (error) {
231
+ throw new Error(`Failed to find alerts by severity: ${error instanceof Error ? error.message : "Unknown error"}`);
232
+ }
233
+ }
234
+ /**
235
+ * Find active alerts
236
+ */
237
+ async findActive(includeDeleted = false) {
238
+ try {
239
+ return await Alert_model_1.AlertModel.findActive(includeDeleted);
240
+ }
241
+ catch (error) {
242
+ throw new Error(`Failed to find active alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
243
+ }
244
+ }
245
+ /**
246
+ * Find unread alerts
247
+ */
248
+ async findUnread(includeDeleted = false) {
249
+ try {
250
+ return await Alert_model_1.AlertModel.findUnread(includeDeleted);
251
+ }
252
+ catch (error) {
253
+ throw new Error(`Failed to find unread alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
254
+ }
255
+ }
256
+ /**
257
+ * Find snoozed alerts
258
+ */
259
+ async findSnoozed(includeDeleted = false) {
260
+ try {
261
+ return await Alert_model_1.AlertModel.findSnoozed(includeDeleted);
262
+ }
263
+ catch (error) {
264
+ throw new Error(`Failed to find snoozed alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
265
+ }
266
+ }
267
+ /**
268
+ * Find expired snooze alerts
269
+ */
270
+ async findExpiredSnooze(includeDeleted = false) {
271
+ try {
272
+ return await Alert_model_1.AlertModel.findExpiredSnooze(includeDeleted);
273
+ }
274
+ catch (error) {
275
+ throw new Error(`Failed to find expired snooze alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
276
+ }
277
+ }
278
+ /**
279
+ * Get alert statistics
280
+ */
281
+ async getStatistics(propertyId) {
282
+ try {
283
+ const query = { isDeleted: false };
284
+ if (propertyId)
285
+ query.propertyId = propertyId;
286
+ const [total, active, unread, snoozed, severityStats, categoryStats] = await Promise.all([
287
+ Alert_model_1.AlertModel.countDocuments(query),
288
+ Alert_model_1.AlertModel.countDocuments({ ...query, isActive: true }),
289
+ Alert_model_1.AlertModel.countDocuments({ ...query, isRead: false }),
290
+ Alert_model_1.AlertModel.countDocuments({
291
+ ...query,
292
+ snoozeUntil: { $exists: true, $ne: null },
293
+ }),
294
+ Alert_model_1.AlertModel.aggregate([
295
+ { $match: query },
296
+ { $group: { _id: "$severity", count: { $sum: 1 } } },
297
+ ]),
298
+ Alert_model_1.AlertModel.aggregate([
299
+ { $match: query },
300
+ { $group: { _id: "$category", count: { $sum: 1 } } },
301
+ ]),
302
+ ]);
303
+ const bySeverity = Object.values(alert_types_1.AlertSeverity).reduce((acc, severity) => {
304
+ acc[severity] = 0;
305
+ return acc;
306
+ }, {});
307
+ const byCategory = Object.values(alert_types_1.AlertCategory).reduce((acc, category) => {
308
+ acc[category] = 0;
309
+ return acc;
310
+ }, {});
311
+ // Type-safe handling of aggregation results
312
+ severityStats.forEach((stat) => {
313
+ if (stat._id in bySeverity) {
314
+ bySeverity[stat._id] = stat.count;
315
+ }
316
+ });
317
+ categoryStats.forEach((stat) => {
318
+ if (stat._id in byCategory) {
319
+ byCategory[stat._id] = stat.count;
320
+ }
321
+ });
322
+ return {
323
+ total,
324
+ active,
325
+ unread,
326
+ snoozed,
327
+ bySeverity,
328
+ byCategory,
329
+ };
330
+ }
331
+ catch (error) {
332
+ throw new Error(`Failed to get alert statistics: ${error instanceof Error ? error.message : "Unknown error"}`);
333
+ }
334
+ }
335
+ /**
336
+ * Bulk update alerts
337
+ */
338
+ async bulkUpdate(ids, updateData) {
339
+ try {
340
+ const result = await Alert_model_1.AlertModel.updateMany({ _id: { $in: ids } }, { ...updateData, updatedAt: new Date() });
341
+ return result.modifiedCount;
342
+ }
343
+ catch (error) {
344
+ throw new Error(`Failed to bulk update alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
345
+ }
346
+ }
347
+ /**
348
+ * Bulk soft delete alerts
349
+ */
350
+ async bulkSoftDelete(ids, deletedBy) {
351
+ try {
352
+ const result = await Alert_model_1.AlertModel.updateMany({ _id: { $in: ids } }, {
353
+ isDeleted: true,
354
+ updatedBy: deletedBy,
355
+ updatedAt: new Date(),
356
+ });
357
+ return result.modifiedCount;
358
+ }
359
+ catch (error) {
360
+ throw new Error(`Failed to bulk soft delete alerts: ${error instanceof Error ? error.message : "Unknown error"}`);
361
+ }
362
+ }
363
+ };
364
+ __setFunctionName(_classThis, "AlertRepository");
365
+ (() => {
366
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
367
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
368
+ AlertRepository = _classThis = _classDescriptor.value;
369
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
370
+ __runInitializers(_classThis, _classExtraInitializers);
371
+ })();
372
+ return AlertRepository = _classThis;
373
+ })();
374
+ exports.AlertRepository = AlertRepository;
@@ -0,0 +1,8 @@
1
+ import { IConnection } from "../interfaces/IConnection";
2
+ export declare class ConnectionRepository {
3
+ private readonly pool;
4
+ constructor();
5
+ createConnection(data: Partial<IConnection>): Promise<IConnection>;
6
+ getConnectionById(connectionId: string): Promise<IConnection>;
7
+ updateConnection(connectionId: string, data: Partial<IConnection>): Promise<any>;
8
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
37
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
38
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.ConnectionRepository = void 0;
42
+ const db_1 = require("../../../db");
43
+ const typedi_1 = require("typedi");
44
+ let ConnectionRepository = (() => {
45
+ let _classDecorators = [(0, typedi_1.Service)()];
46
+ let _classDescriptor;
47
+ let _classExtraInitializers = [];
48
+ let _classThis;
49
+ var ConnectionRepository = _classThis = class {
50
+ constructor() {
51
+ this.pool = (0, db_1.getPostgresClient)();
52
+ }
53
+ async createConnection(data) {
54
+ const result = await this.pool.query('INSERT INTO dt_connections ("connectionName", "connectionRefId", "propertyId", "connectionProvider", "accessToken", "refreshToken", "clientId", "clientSecret", "isActive", "metaData") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING *', [
55
+ data.connectionName,
56
+ data.connectionRefId,
57
+ data.propertyId,
58
+ data.connectionProvider,
59
+ data.accessToken,
60
+ data.refreshToken,
61
+ data.clientId,
62
+ data.clientSecret,
63
+ data.isActive,
64
+ data.metaData,
65
+ ]);
66
+ return result.rows[0];
67
+ }
68
+ async getConnectionById(connectionId) {
69
+ const result = await this.pool.query("SELECT * FROM dt_connections WHERE id = $1", [connectionId]);
70
+ return result.rows[0];
71
+ }
72
+ async updateConnection(connectionId, data) {
73
+ // Build dynamic SET clause with quoted column names
74
+ const setClause = Object.keys(data)
75
+ .map((key, index) => `"${key}" = $${index + 2}`)
76
+ .join(", ");
77
+ const values = Object.values(data);
78
+ const result = await this.pool.query(`UPDATE dt_connections SET ${setClause}, "updatedAt" = NOW() WHERE id = $1 RETURNING *`, [connectionId, ...values]);
79
+ return result.rows[0];
80
+ }
81
+ };
82
+ __setFunctionName(_classThis, "ConnectionRepository");
83
+ (() => {
84
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
85
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
86
+ ConnectionRepository = _classThis = _classDescriptor.value;
87
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
88
+ __runInitializers(_classThis, _classExtraInitializers);
89
+ })();
90
+ return ConnectionRepository = _classThis;
91
+ })();
92
+ exports.ConnectionRepository = ConnectionRepository;
@@ -0,0 +1,30 @@
1
+ import { IDevice, IStatus, IStatusQuery } from "../interfaces/IDevice";
2
+ import { IDtDevice } from "../interfaces/IDtDevice";
3
+ export declare class DeviceRepository {
4
+ private readonly postgres;
5
+ private readonly axiosInstance;
6
+ constructor();
7
+ createDevice(body: IDevice): Promise<IDevice>;
8
+ getDevice(deviceId: string, withHubDetails?: boolean): Promise<IDevice>;
9
+ updateDevice(deviceId: string, body: any): Promise<IDevice>;
10
+ updateDevices(query: any, updateData: any): Promise<any>;
11
+ deleteDevice(deviceId: string): Promise<void>;
12
+ getDevices(deviceIds: string[], withHubDetails?: boolean): Promise<IDevice[]>;
13
+ getPropertyDevices(propertyId: string, selectDeviceId?: boolean, type?: string, withHubDetails?: boolean): Promise<IDevice[]>;
14
+ getPropertyDeviceIds(propertyId: string, selectDeviceId: boolean | undefined, manufacturer: string): Promise<any>;
15
+ getState(deviceId: string): Promise<any>;
16
+ setState(deviceId: string, state: any): Promise<any>;
17
+ getStatus(deviceId: string): Promise<Record<string, any>>;
18
+ setStatus(deviceId: string, newStatus: IStatus): Promise<any>;
19
+ setStatusMany(query: IStatusQuery, newStatus: IStatus): Promise<any>;
20
+ getBatteryLevel(deviceId: string): Promise<Record<string, any>>;
21
+ setBatteryLevel(deviceId: string, newBatteryLevel: any): Promise<any>;
22
+ getMetaData(deviceId: string): Promise<any>;
23
+ setMetaData(deviceId: string, metaData: Record<string, any>): Promise<any>;
24
+ getDevicesByAccessGroup(accessGroupId: string): Promise<IDtDevice[]>;
25
+ getDevicesByZone(zoneId: string): Promise<IDtDevice[]>;
26
+ querySelect(query: any, fields: string[]): Promise<any>;
27
+ queryCount(query: any): Promise<number>;
28
+ deleteDevices(query: any): Promise<any>;
29
+ queryDevices(query: any): Promise<any>;
30
+ }