Skip to content

Commit

Permalink
fix: refactor alert, incident, and scheduled maintenance feed service…
Browse files Browse the repository at this point in the history
…s to improve error handling and logging
  • Loading branch information
simlarsen committed Jan 17, 2025
1 parent b6c6186 commit 854fe30
Show file tree
Hide file tree
Showing 3 changed files with 146 additions and 119 deletions.
84 changes: 47 additions & 37 deletions Common/Server/Services/AlertFeedService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import OneUptimeDate from "../../Types/Date";
import BadDataException from "../../Types/Exception/BadDataException";
import ObjectID from "../../Types/ObjectID";
import { IsBillingEnabled } from "../EnvironmentConfig";
import logger from "../Utils/Logger";
import DatabaseService from "./DatabaseService";
import Model, {
AlertFeedEventType,
Expand All @@ -27,54 +28,63 @@ export class Service extends DatabaseService<Model> {
displayColor?: Color | undefined;
userId?: ObjectID | undefined;
postedAt?: Date | undefined;
}): Promise<Model> {
if (!data.alertId) {
throw new BadDataException("Alert ID is required");
}
}): Promise<void> {

if (!data.feedInfoInMarkdown) {
throw new BadDataException("Log in markdown is required");
}
try {

if (!data.alertFeedEventType) {
throw new BadDataException("Alert log event is required");
}
if (!data.alertId) {
throw new BadDataException("Alert ID is required");
}

if (!data.projectId) {
throw new BadDataException("Project ID is required");
}
if (!data.feedInfoInMarkdown) {
throw new BadDataException("Log in markdown is required");
}

const alertFeed: Model = new Model();
if (!data.alertFeedEventType) {
throw new BadDataException("Alert log event is required");
}

if (!data.displayColor) {
data.displayColor = Blue500;
}
if (!data.projectId) {
throw new BadDataException("Project ID is required");
}

if (data.userId) {
alertFeed.userId = data.userId;
}
const alertFeed: Model = new Model();

alertFeed.displayColor = data.displayColor;
if (!data.displayColor) {
data.displayColor = Blue500;
}

alertFeed.alertId = data.alertId;
alertFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
alertFeed.alertFeedEventType = data.alertFeedEventType;
alertFeed.projectId = data.projectId;
if (data.userId) {
alertFeed.userId = data.userId;
}

if (!data.postedAt) {
alertFeed.postedAt = OneUptimeDate.getCurrentDate();
}
alertFeed.displayColor = data.displayColor;

if (data.moreInformationInMarkdown) {
alertFeed.moreInformationInMarkdown = data.moreInformationInMarkdown;
}
alertFeed.alertId = data.alertId;
alertFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
alertFeed.alertFeedEventType = data.alertFeedEventType;
alertFeed.projectId = data.projectId;

if (!data.postedAt) {
alertFeed.postedAt = OneUptimeDate.getCurrentDate();
}

return await this.create({
data: alertFeed,
props: {
isRoot: true,
},
});
if (data.moreInformationInMarkdown) {
alertFeed.moreInformationInMarkdown = data.moreInformationInMarkdown;
}

await this.create({
data: alertFeed,
props: {
isRoot: true,
},
});

} catch (error) {
logger.error("AlertFeedService.createAlertFeed");
logger.error(error);
// we dont want to throw the error here, as this is a non-critical operation
}
}
}

Expand Down
92 changes: 50 additions & 42 deletions Common/Server/Services/IncidentFeedService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,61 +28,69 @@ export class Service extends DatabaseService<IncidentFeed> {
displayColor?: Color | undefined;
userId?: ObjectID | undefined;
postedAt?: Date | undefined;
}): Promise<IncidentFeed> {
logger.debug("IncidentFeedService.createIncidentFeed");
logger.debug(data);
}): Promise<void> {

const incidentFeed: IncidentFeed = new IncidentFeed();
try {

if (!data.incidentId) {
throw new BadDataException("Incident ID is required");
}
logger.debug("IncidentFeedService.createIncidentFeed");
logger.debug(data);

if (!data.feedInfoInMarkdown) {
throw new BadDataException("Log in markdown is required");
}
const incidentFeed: IncidentFeed = new IncidentFeed();

if (!data.incidentFeedEventType) {
throw new BadDataException("Incident log event is required");
}
if (!data.incidentId) {
throw new BadDataException("Incident ID is required");
}

if (!data.projectId) {
throw new BadDataException("Project ID is required");
}
if (!data.feedInfoInMarkdown) {
throw new BadDataException("Log in markdown is required");
}

if (!data.displayColor) {
data.displayColor = Blue500;
}
if (!data.incidentFeedEventType) {
throw new BadDataException("Incident log event is required");
}

incidentFeed.displayColor = data.displayColor;
incidentFeed.incidentId = data.incidentId;
incidentFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
incidentFeed.incidentFeedEventType = data.incidentFeedEventType;
incidentFeed.projectId = data.projectId;
if (!data.projectId) {
throw new BadDataException("Project ID is required");
}

if (!data.postedAt) {
incidentFeed.postedAt = OneUptimeDate.getCurrentDate();
}
if (!data.displayColor) {
data.displayColor = Blue500;
}

if (data.userId) {
incidentFeed.userId = data.userId;
}
incidentFeed.displayColor = data.displayColor;
incidentFeed.incidentId = data.incidentId;
incidentFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
incidentFeed.incidentFeedEventType = data.incidentFeedEventType;
incidentFeed.projectId = data.projectId;

if (data.moreInformationInMarkdown) {
incidentFeed.moreInformationInMarkdown = data.moreInformationInMarkdown;
}
if (!data.postedAt) {
incidentFeed.postedAt = OneUptimeDate.getCurrentDate();
}

if (data.userId) {
incidentFeed.userId = data.userId;
}

const createdIncidentFeed: IncidentFeed = await this.create({
data: incidentFeed,
props: {
isRoot: true,
},
});
if (data.moreInformationInMarkdown) {
incidentFeed.moreInformationInMarkdown = data.moreInformationInMarkdown;
}

logger.debug("Incident Feed created");
logger.debug(createdIncidentFeed);
const createdIncidentFeed: IncidentFeed = await this.create({
data: incidentFeed,
props: {
isRoot: true,
},
});

return createdIncidentFeed;
logger.debug("Incident Feed created");
logger.debug(createdIncidentFeed);

} catch (e) {
logger.error("Error in creating incident feed");
logger.error(e);

// we dont throw this error as it is not a critical error
}
}
}

Expand Down
89 changes: 49 additions & 40 deletions Common/Server/Services/ScheduledMaintenanceFeedService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import OneUptimeDate from "../../Types/Date";
import BadDataException from "../../Types/Exception/BadDataException";
import ObjectID from "../../Types/ObjectID";
import { IsBillingEnabled } from "../EnvironmentConfig";
import logger from "../Utils/Logger";
import DatabaseService from "./DatabaseService";
import Model, {
ScheduledMaintenanceFeedEventType,
Expand All @@ -27,56 +28,64 @@ export class Service extends DatabaseService<Model> {
displayColor?: Color | undefined;
userId?: ObjectID | undefined;
postedAt?: Date | undefined;
}): Promise<Model> {
if (!data.scheduledMaintenanceId) {
throw new BadDataException("Scheduled Maintenance ID is required");
}
}): Promise<void> {

if (!data.feedInfoInMarkdown) {
throw new BadDataException("Log in markdown is required");
}
try {

if (!data.scheduledMaintenanceFeedEventType) {
throw new BadDataException("Scheduled Maintenance log event is required");
}
if (!data.scheduledMaintenanceId) {
throw new BadDataException("Scheduled Maintenance ID is required");
}

if (!data.projectId) {
throw new BadDataException("Project ID is required");
}
if (!data.feedInfoInMarkdown) {
throw new BadDataException("Log in markdown is required");
}

if (!data.displayColor) {
data.displayColor = Blue500;
}
if (!data.scheduledMaintenanceFeedEventType) {
throw new BadDataException("Scheduled Maintenance log event is required");
}

const scheduledMaintenanceFeed: Model = new Model();
if (!data.projectId) {
throw new BadDataException("Project ID is required");
}

scheduledMaintenanceFeed.displayColor = data.displayColor;
scheduledMaintenanceFeed.scheduledMaintenanceId =
data.scheduledMaintenanceId;
scheduledMaintenanceFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
scheduledMaintenanceFeed.scheduledMaintenanceFeedEventType =
data.scheduledMaintenanceFeedEventType;
scheduledMaintenanceFeed.projectId = data.projectId;
if (!data.displayColor) {
data.displayColor = Blue500;
}

if (data.userId) {
scheduledMaintenanceFeed.userId = data.userId;
}
const scheduledMaintenanceFeed: Model = new Model();

if (data.moreInformationInMarkdown) {
scheduledMaintenanceFeed.moreInformationInMarkdown =
data.moreInformationInMarkdown;
}
scheduledMaintenanceFeed.displayColor = data.displayColor;
scheduledMaintenanceFeed.scheduledMaintenanceId =
data.scheduledMaintenanceId;
scheduledMaintenanceFeed.feedInfoInMarkdown = data.feedInfoInMarkdown;
scheduledMaintenanceFeed.scheduledMaintenanceFeedEventType =
data.scheduledMaintenanceFeedEventType;
scheduledMaintenanceFeed.projectId = data.projectId;

if (!data.postedAt) {
scheduledMaintenanceFeed.postedAt = OneUptimeDate.getCurrentDate();
}
if (data.userId) {
scheduledMaintenanceFeed.userId = data.userId;
}

if (data.moreInformationInMarkdown) {
scheduledMaintenanceFeed.moreInformationInMarkdown =
data.moreInformationInMarkdown;
}

return await this.create({
data: scheduledMaintenanceFeed,
props: {
isRoot: true,
},
});
if (!data.postedAt) {
scheduledMaintenanceFeed.postedAt = OneUptimeDate.getCurrentDate();
}

await this.create({
data: scheduledMaintenanceFeed,
props: {
isRoot: true,
},
});
} catch (error) {
logger.error("ScheduledMaintenanceFeedService.createScheduledMaintenanceFeed");
logger.error(error);
// we dont want to throw the error here, as this is not critical but we still log it.
}
}
}

Expand Down

0 comments on commit 854fe30

Please sign in to comment.