From 31293bbe0651e956c91c364c0a768f05e02d0aa8 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Fri, 10 Feb 2023 19:33:40 -0800 Subject: [PATCH] Remove tags from secrets when tag is deleted --- backend/src/controllers/v2/tagController.ts | 8 +++++++- backend/src/models/secret.ts | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/src/controllers/v2/tagController.ts b/backend/src/controllers/v2/tagController.ts index b737eb41a..199f2401e 100644 --- a/backend/src/controllers/v2/tagController.ts +++ b/backend/src/controllers/v2/tagController.ts @@ -2,7 +2,7 @@ import { Request, Response } from 'express'; import * as Sentry from '@sentry/node'; import { Types } from 'mongoose'; import { - Membership, + Membership, Secret, } from '../../models'; import Tag, { ITag } from '../../models/tag'; import { Builder } from "builder-pattern" @@ -54,6 +54,12 @@ export const deleteWorkspaceTag = async (req: Request, res: Response) => { const result = await Tag.findByIdAndDelete(tagId); + // remove the tag from secrets + await Secret.updateMany( + { tags: { $in: [tagId] } }, + { $pull: { tags: tagId } } + ); + res.json(result); } diff --git a/backend/src/models/secret.ts b/backend/src/models/secret.ts index 4ac6c768d..463ed50fd 100644 --- a/backend/src/models/secret.ts +++ b/backend/src/models/secret.ts @@ -109,6 +109,9 @@ const secretSchema = new Schema( } ); + +secretSchema.index({ tags: 1 }, { background: true }) + const Secret = model('Secret', secretSchema); export default Secret;