From c27afb2c8a4d470bb3da43cdb9a684bd8ecd1941 Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Sat, 21 Jun 2025 20:43:19 +0300 Subject: [PATCH 1/4] Enable notifications for new projects --- src/models/project.ts | 2 +- src/resolvers/project.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/models/project.ts b/src/models/project.ts index 256cfdd7..16147ddb 100644 --- a/src/models/project.ts +++ b/src/models/project.ts @@ -9,7 +9,7 @@ import { v4 as uuid } from 'uuid'; */ export enum ReceiveTypes { /** - * All notifications + * Notify if more than n error occurrences in the given period */ SEEN_MORE = 'SEEN_MORE', diff --git a/src/resolvers/project.js b/src/resolvers/project.js index 9c0ada37..0d357157 100644 --- a/src/resolvers/project.js +++ b/src/resolvers/project.js @@ -1,3 +1,4 @@ +import { ReceiveTypes } from '@hawk.so/types'; import * as telegram from '../utils/telegram'; const mongo = require('../mongo'); const { ApolloError, UserInputError } = require('apollo-server-express'); @@ -56,6 +57,33 @@ module.exports = { }; const project = await factories.projectsFactory.create(options); + const userData = await factories.usersFactory.findById(user.id); + + await project.createNotificationsRule({ + isEnabled: true, + whatToReceive: ReceiveTypes.SEEN_MORE, + including: [], + excluding: [], + threshold: 20, + thresholdPeriod: 3600000, + channels: { + email: { + isEnabled: true, + endpoint: userData.email, + minPeriod: 60, + }, + telegram: { + isEnabled: false, + endpoint: '', + minPeriod: 60, + }, + slack: { + isEnabled: false, + endpoint: '', + minPeriod: 60, + }, + }, + }); /** * Create collections for storing events and setup indexes From 3bff70cfb80263dfe804c1217826730ad8e236f4 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 21 Jun 2025 18:15:08 +0000 Subject: [PATCH 2/4] Bump version up to 1.1.25 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64e190e2..2394d4af 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hawk.api", - "version": "1.1.24", + "version": "1.1.25", "main": "index.ts", "license": "UNLICENSED", "scripts": { From 174c628fe38bf7c7b0d8d97451951e215f3ae0e6 Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Sat, 21 Jun 2025 21:15:35 +0300 Subject: [PATCH 3/4] Upd --- src/resolvers/project.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/resolvers/project.js b/src/resolvers/project.js index 0d357157..8b631d2f 100644 --- a/src/resolvers/project.js +++ b/src/resolvers/project.js @@ -56,7 +56,7 @@ module.exports = { image, }; - const project = await factories.projectsFactory.create(options); + let project = await factories.projectsFactory.create(options); const userData = await factories.usersFactory.findById(user.id); await project.createNotificationsRule({ @@ -85,6 +85,8 @@ module.exports = { }, }); + project = await factories.projectsFactory.findById(project._id); + /** * Create collections for storing events and setup indexes */ From 9bc0cff6a4dfd1bb5f1f9eb96b04eff3df90d7d8 Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Sun, 22 Jun 2025 16:24:20 +0300 Subject: [PATCH 4/4] Add try/catch --- src/resolvers/project.js | 54 +++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/src/resolvers/project.js b/src/resolvers/project.js index 8b631d2f..07251be1 100644 --- a/src/resolvers/project.js +++ b/src/resolvers/project.js @@ -59,33 +59,37 @@ module.exports = { let project = await factories.projectsFactory.create(options); const userData = await factories.usersFactory.findById(user.id); - await project.createNotificationsRule({ - isEnabled: true, - whatToReceive: ReceiveTypes.SEEN_MORE, - including: [], - excluding: [], - threshold: 20, - thresholdPeriod: 3600000, - channels: { - email: { - isEnabled: true, - endpoint: userData.email, - minPeriod: 60, - }, - telegram: { - isEnabled: false, - endpoint: '', - minPeriod: 60, - }, - slack: { - isEnabled: false, - endpoint: '', - minPeriod: 60, + try { + await project.createNotificationsRule({ + isEnabled: true, + whatToReceive: ReceiveTypes.SEEN_MORE, + including: [], + excluding: [], + threshold: 20, + thresholdPeriod: 3600000, + channels: { + email: { + isEnabled: true, + endpoint: userData.email, + minPeriod: 60, + }, + telegram: { + isEnabled: false, + endpoint: '', + minPeriod: 60, + }, + slack: { + isEnabled: false, + endpoint: '', + minPeriod: 60, + }, }, - }, - }); + }); - project = await factories.projectsFactory.findById(project._id); + project = await factories.projectsFactory.findById(project._id); + } catch (err) { + telegram.sendMessage(`❌ Failed to enable default notifications for project ${name}`); + } /** * Create collections for storing events and setup indexes