mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-01-16 23:00:51 +00:00
74 lines
2.1 KiB
TypeScript
74 lines
2.1 KiB
TypeScript
import DataMigrationBase from "./DataMigrationBase";
|
|
import LIMIT_MAX, { LIMIT_PER_PROJECT } from "Common/Types/Database/LimitMax";
|
|
import ProjectService from "Common/Server/Services/ProjectService";
|
|
import Project from "Common/Models/DatabaseModels/Project";
|
|
import TeamMember from "Common/Models/DatabaseModels/TeamMember";
|
|
import TeamMemberService from "Common/Server/Services/TeamMemberService";
|
|
import ObjectID from "Common/Types/ObjectID";
|
|
import UserNotificationSettingService from "Common/Server/Services/UserNotificationSettingService";
|
|
import logger from "Common/Server/Utils/Logger";
|
|
|
|
export default class AddOnCallNotificationForUsers extends DataMigrationBase {
|
|
public constructor() {
|
|
super("AddOnCallNotificationForUsers");
|
|
}
|
|
|
|
public override async migrate(): Promise<void> {
|
|
// get all the users with email isVerified true.
|
|
|
|
const projects: Array<Project> = await ProjectService.findBy({
|
|
query: {},
|
|
select: {
|
|
_id: true,
|
|
},
|
|
skip: 0,
|
|
limit: LIMIT_MAX,
|
|
props: {
|
|
isRoot: true,
|
|
},
|
|
});
|
|
|
|
for (const project of projects) {
|
|
const teamMembers: Array<TeamMember> = await TeamMemberService.findBy({
|
|
query: {
|
|
projectId: project.id!,
|
|
},
|
|
|
|
select: {
|
|
userId: true,
|
|
},
|
|
skip: 0,
|
|
limit: LIMIT_PER_PROJECT,
|
|
props: {
|
|
isRoot: true,
|
|
},
|
|
});
|
|
|
|
if (teamMembers.length > 0) {
|
|
// for each team member.
|
|
for (const teamMember of teamMembers) {
|
|
const userId: ObjectID = teamMember.userId!;
|
|
if (!userId) {
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
await UserNotificationSettingService.addOnCallNotificationSettings(
|
|
userId,
|
|
project.id!,
|
|
);
|
|
} catch (err) {
|
|
// Log the error
|
|
logger.error(
|
|
`Failed to add default notification settings for user ${userId}: ${err}`,
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public override async rollback(): Promise<void> {
|
|
return;
|
|
}
|
|
}
|