@oneuptime/common 7.0.3815 → 7.0.3826

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 (32) hide show
  1. package/Models/DatabaseModels/AlertStateTimeline.ts +1 -1
  2. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -1
  3. package/Models/DatabaseModels/MonitorStatusTimeline.ts +1 -1
  4. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -1
  5. package/Models/DatabaseModels/WorkspaceNotificationRule.ts +8 -0
  6. package/Server/Services/AlertStateTimelineService.ts +192 -86
  7. package/Server/Services/IncidentStateTimelineService.ts +205 -103
  8. package/Server/Services/MonitorStatusTimelineService.ts +202 -101
  9. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +201 -101
  10. package/UI/Components/Forms/BasicForm.tsx +4 -0
  11. package/UI/Components/Forms/Types/Field.ts +3 -0
  12. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +1 -1
  13. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
  14. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -1
  15. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  16. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +1 -1
  17. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
  18. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -1
  19. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  20. package/build/dist/Models/DatabaseModels/WorkspaceNotificationRule.js +8 -0
  21. package/build/dist/Models/DatabaseModels/WorkspaceNotificationRule.js.map +1 -1
  22. package/build/dist/Server/Services/AlertStateTimelineService.js +171 -72
  23. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
  24. package/build/dist/Server/Services/IncidentStateTimelineService.js +171 -73
  25. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  26. package/build/dist/Server/Services/MonitorStatusTimelineService.js +168 -72
  27. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  28. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +174 -80
  29. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  30. package/build/dist/UI/Components/Forms/BasicForm.js +3 -0
  31. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  32. package/package.json +2 -2
@@ -14,7 +14,7 @@ export class Service extends DatabaseService {
14
14
  constructor() {
15
15
  super(MonitorStatusTimeline);
16
16
  if (IsBillingEnabled) {
17
- this.hardDeleteItemsOlderThanInDays("createdAt", 120);
17
+ this.hardDeleteItemsOlderThanInDays("startsAt", 120);
18
18
  }
19
19
  }
20
20
  async onBeforeCreate(createBy) {
@@ -52,28 +52,58 @@ export class Service extends DatabaseService {
52
52
  })}`;
53
53
  }
54
54
  }
55
- const lastMonitorStatusTimeline = await this.findOneBy({
55
+ const stateBeforeThis = await this.findOneBy({
56
56
  query: {
57
57
  monitorId: createBy.data.monitorId,
58
+ startsAt: QueryHelper.lessThanEqualTo(createBy.data.startsAt),
58
59
  },
59
60
  sort: {
60
- createdAt: SortOrder.Descending,
61
+ startsAt: SortOrder.Descending,
61
62
  },
62
63
  props: {
63
64
  isRoot: true,
64
65
  },
65
66
  select: {
66
- _id: true,
67
+ monitorStatusId: true,
68
+ startsAt: true,
69
+ endsAt: true,
67
70
  },
68
71
  });
69
- if (!lastMonitorStatusTimeline) {
72
+ logger.debug("State Before this");
73
+ logger.debug(stateBeforeThis);
74
+ // If this is the first state, then do not notify the owner.
75
+ if (!stateBeforeThis) {
70
76
  // since this is the first status, do not notify the owner.
71
77
  createBy.data.isOwnerNotified = true;
72
78
  }
79
+ const stateAfterThis = await this.findOneBy({
80
+ query: {
81
+ monitorId: createBy.data.monitorId,
82
+ startsAt: QueryHelper.greaterThan(createBy.data.startsAt),
83
+ },
84
+ sort: {
85
+ startsAt: SortOrder.Ascending,
86
+ },
87
+ props: {
88
+ isRoot: true,
89
+ },
90
+ select: {
91
+ monitorStatusId: true,
92
+ startsAt: true,
93
+ endsAt: true,
94
+ },
95
+ });
96
+ // compute ends at. It's the start of the next status.
97
+ if (stateAfterThis && stateAfterThis.startsAt) {
98
+ createBy.data.endsAt = stateAfterThis.startsAt;
99
+ }
100
+ logger.debug("State After this");
101
+ logger.debug(stateAfterThis);
73
102
  return {
74
103
  createBy,
75
104
  carryForward: {
76
- lastMonitorStatusTimelineId: (lastMonitorStatusTimeline === null || lastMonitorStatusTimeline === void 0 ? void 0 : lastMonitorStatusTimeline.id) || null,
105
+ statusTimelineBeforeThisStatus: stateBeforeThis || null,
106
+ statusTimelineAfterThisStatus: stateAfterThis || null,
77
107
  mutex: mutex,
78
108
  },
79
109
  };
@@ -87,26 +117,68 @@ export class Service extends DatabaseService {
87
117
  throw new BadDataException("monitorStatusId is null");
88
118
  }
89
119
  // update the last status as ended.
90
- if (onCreate.carryForward.lastMonitorStatusTimelineId) {
120
+ logger.debug("Status Timeline Before this");
121
+ logger.debug(onCreate.carryForward.statusTimelineBeforeThisStatus);
122
+ logger.debug("Status Timeline After this");
123
+ logger.debug(onCreate.carryForward.statusTimelineAfterThisStatus);
124
+ logger.debug("Created Item");
125
+ logger.debug(createdItem);
126
+ // now there are three cases.
127
+ // 1. This is the first status OR there's no status after this.
128
+ if (!onCreate.carryForward.statusTimelineBeforeThisStatus) {
129
+ // This is the first status, no need to update previous status.
130
+ logger.debug("This is the first status.");
131
+ }
132
+ else if (!onCreate.carryForward.statusTimelineAfterThisStatus) {
133
+ // 2. This is the last status.
134
+ // Update the previous status to end at the start of this status.
91
135
  await this.updateOneById({
92
- id: onCreate.carryForward.lastMonitorStatusTimelineId,
136
+ id: onCreate.carryForward.statusTimelineBeforeThisStatus.id,
93
137
  data: {
94
- endsAt: createdItem.createdAt || OneUptimeDate.getCurrentDate(),
138
+ endsAt: createdItem.startsAt,
95
139
  },
96
140
  props: {
97
141
  isRoot: true,
98
142
  },
99
143
  });
144
+ logger.debug("This is the last status.");
145
+ }
146
+ else {
147
+ // 3. This is in the middle.
148
+ // Update the previous status to end at the start of this status.
149
+ await this.updateOneById({
150
+ id: onCreate.carryForward.statusTimelineBeforeThisStatus.id,
151
+ data: {
152
+ endsAt: createdItem.startsAt,
153
+ },
154
+ props: {
155
+ isRoot: true,
156
+ },
157
+ });
158
+ // Update the next status to start at the end of this status.
159
+ await this.updateOneById({
160
+ id: onCreate.carryForward.statusTimelineAfterThisStatus.id,
161
+ data: {
162
+ startsAt: createdItem.endsAt,
163
+ },
164
+ props: {
165
+ isRoot: true,
166
+ },
167
+ });
168
+ logger.debug("This status is in the middle.");
169
+ }
170
+ if (!createdItem.endsAt) {
171
+ // if this is the last status, then update the monitor status.
172
+ await MonitorService.updateOneBy({
173
+ query: {
174
+ _id: (_a = createdItem.monitorId) === null || _a === void 0 ? void 0 : _a.toString(),
175
+ },
176
+ data: {
177
+ currentMonitorStatusId: createdItem.monitorStatusId,
178
+ },
179
+ props: onCreate.createBy.props,
180
+ });
100
181
  }
101
- await MonitorService.updateOneBy({
102
- query: {
103
- _id: (_a = createdItem.monitorId) === null || _a === void 0 ? void 0 : _a.toString(),
104
- },
105
- data: {
106
- currentMonitorStatusId: createdItem.monitorStatusId,
107
- },
108
- props: onCreate.createBy.props,
109
- });
110
182
  if (onCreate.carryForward.mutex) {
111
183
  const mutex = onCreate.carryForward.mutex;
112
184
  await Semaphore.release(mutex);
@@ -120,6 +192,7 @@ export class Service extends DatabaseService {
120
192
  select: {
121
193
  monitorId: true,
122
194
  startsAt: true,
195
+ endsAt: true,
123
196
  },
124
197
  props: {
125
198
  isRoot: true,
@@ -135,69 +208,92 @@ export class Service extends DatabaseService {
135
208
  isRoot: true,
136
209
  },
137
210
  });
211
+ if (!monitorStatusTimelineToBeDeleted) {
212
+ throw new BadDataException("Monitor status timeline not found.");
213
+ }
138
214
  if (monitorStatusTimeline.isOne()) {
139
215
  throw new BadDataException("Cannot delete the only status timeline. Monitor should have at least one status timeline.");
140
216
  }
141
- // adjust times of other timeline events. get the state before this status timeline.
142
- if (monitorStatusTimelineToBeDeleted === null || monitorStatusTimelineToBeDeleted === void 0 ? void 0 : monitorStatusTimelineToBeDeleted.startsAt) {
143
- const beforeState = await this.findOneBy({
144
- query: {
145
- monitorId: monitorId,
146
- startsAt: QueryHelper.lessThan(monitorStatusTimelineToBeDeleted === null || monitorStatusTimelineToBeDeleted === void 0 ? void 0 : monitorStatusTimelineToBeDeleted.startsAt),
217
+ // There are three cases.
218
+ // 1. This is the first status.
219
+ // 2. This is the last status.
220
+ // 3. This is in the middle.
221
+ const stateBeforeThis = await this.findOneBy({
222
+ query: {
223
+ _id: QueryHelper.notEquals(deleteBy.query._id),
224
+ monitorId: monitorId,
225
+ startsAt: QueryHelper.lessThanEqualTo(monitorStatusTimelineToBeDeleted.startsAt),
226
+ },
227
+ sort: {
228
+ startsAt: SortOrder.Descending,
229
+ },
230
+ props: {
231
+ isRoot: true,
232
+ },
233
+ select: {
234
+ monitorStatusId: true,
235
+ startsAt: true,
236
+ endsAt: true,
237
+ },
238
+ });
239
+ const stateAfterThis = await this.findOneBy({
240
+ query: {
241
+ monitorId: monitorId,
242
+ startsAt: QueryHelper.greaterThan(monitorStatusTimelineToBeDeleted.startsAt),
243
+ },
244
+ sort: {
245
+ startsAt: SortOrder.Ascending,
246
+ },
247
+ props: {
248
+ isRoot: true,
249
+ },
250
+ select: {
251
+ monitorStatusId: true,
252
+ startsAt: true,
253
+ endsAt: true,
254
+ },
255
+ });
256
+ if (!stateBeforeThis) {
257
+ // This is the first status, no need to update previous status.
258
+ logger.debug("This is the first status.");
259
+ }
260
+ else if (!stateAfterThis) {
261
+ // This is the last status.
262
+ // Update the previous status to end at the start of this status.
263
+ await this.updateOneById({
264
+ id: stateBeforeThis.id,
265
+ data: {
266
+ endsAt: monitorStatusTimelineToBeDeleted.endsAt,
267
+ },
268
+ props: {
269
+ isRoot: true,
147
270
  },
148
- sort: {
149
- createdAt: SortOrder.Descending,
271
+ });
272
+ logger.debug("This is the last status.");
273
+ }
274
+ else {
275
+ // This status is in the middle.
276
+ // Update the previous status to end at the start of this status.
277
+ await this.updateOneById({
278
+ id: stateBeforeThis.id,
279
+ data: {
280
+ endsAt: stateAfterThis.startsAt,
150
281
  },
151
282
  props: {
152
283
  isRoot: true,
153
284
  },
154
- select: {
155
- _id: true,
156
- startsAt: true,
285
+ });
286
+ // Update the next status to start at the end of this status.
287
+ await this.updateOneById({
288
+ id: stateAfterThis.id,
289
+ data: {
290
+ startsAt: monitorStatusTimelineToBeDeleted.startsAt,
291
+ },
292
+ props: {
293
+ isRoot: true,
157
294
  },
158
295
  });
159
- if (beforeState) {
160
- const afterState = await this.findOneBy({
161
- query: {
162
- monitorId: monitorId,
163
- startsAt: QueryHelper.greaterThan(monitorStatusTimelineToBeDeleted === null || monitorStatusTimelineToBeDeleted === void 0 ? void 0 : monitorStatusTimelineToBeDeleted.startsAt),
164
- },
165
- sort: {
166
- createdAt: SortOrder.Ascending,
167
- },
168
- props: {
169
- isRoot: true,
170
- },
171
- select: {
172
- _id: true,
173
- startsAt: true,
174
- },
175
- });
176
- if (!afterState) {
177
- // if there's nothing after then end date of before state is null.
178
- await this.updateOneById({
179
- id: beforeState.id,
180
- data: {
181
- endsAt: null,
182
- },
183
- props: {
184
- isRoot: true,
185
- },
186
- });
187
- }
188
- else {
189
- // if there's something after then end date of before state is start date of after state.
190
- await this.updateOneById({
191
- id: beforeState.id,
192
- data: {
193
- endsAt: afterState.startsAt,
194
- },
195
- props: {
196
- isRoot: true,
197
- },
198
- });
199
- }
200
- }
296
+ logger.debug("This status is in the middle.");
201
297
  }
202
298
  }
203
299
  return { deleteBy, carryForward: monitorId };
@@ -214,7 +310,7 @@ export class Service extends DatabaseService {
214
310
  monitorId: monitorId,
215
311
  },
216
312
  sort: {
217
- createdAt: SortOrder.Descending,
313
+ startsAt: SortOrder.Descending,
218
314
  },
219
315
  props: {
220
316
  isRoot: true,
@@ -1 +1 @@
1
- {"version":3,"file":"MonitorStatusTimelineService.js","sourceRoot":"","sources":["../../../../Server/Services/MonitorStatusTimelineService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonitorStatusTimelineService.js","sourceRoot":"","sources":["../../../../Server/Services/MonitorStatusTimelineService.ts"],"names":[],"mappings":"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"}