From 4722bb8fcdac05dfba6a5d7589bb01a4228bb42e Mon Sep 17 00:00:00 2001 From: Hasan Mansoor <68682354+HasanMansoor4@users.noreply.github.com> Date: Thu, 2 Feb 2023 05:27:07 +0300 Subject: [PATCH] add auto capitalization api controllers and routes with mongo schema updated --- .../src/controllers/v2/workspaceController.ts | 40 ++++++++++++++++++- backend/src/models/workspace.ts | 5 +++ backend/src/routes/v2/workspace.ts | 15 +++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/backend/src/controllers/v2/workspaceController.ts b/backend/src/controllers/v2/workspaceController.ts index 90781b58c..ce3ecba31 100644 --- a/backend/src/controllers/v2/workspaceController.ts +++ b/backend/src/controllers/v2/workspaceController.ts @@ -467,4 +467,42 @@ export const deleteWorkspaceMembership = async (req: Request, res: Response) => return res.status(200).send({ membership }); -} \ No newline at end of file +} + +/** + * Change autoCapitilzation Rule of workspace + * @param req + * @param res + * @returns + */ +export const toggleAutoCapitilzation = async (req: Request, res: Response) => { + let workspace; + try { + const { workspaceId } = req.params; + const { autoCapitalization } = req.body; + + workspace = await Workspace.findOneAndUpdate( + { + _id: workspaceId + }, + { + autoCapitalization + }, + { + new: true + } + ); + } catch (err) { + Sentry.setUser({ email: req.user.email }); + Sentry.captureException(err); + return res.status(400).send({ + message: 'Failed to change autoCapitalization setting' + }); + } + + return res.status(200).send({ + message: 'Successfully changed autoCapitalization setting', + workspace + }); +}; + diff --git a/backend/src/models/workspace.ts b/backend/src/models/workspace.ts index a70b64340..d68ae9416 100644 --- a/backend/src/models/workspace.ts +++ b/backend/src/models/workspace.ts @@ -8,6 +8,7 @@ export interface IWorkspace { name: string; slug: string; }>; + autoCapitalization: boolean; } const workspaceSchema = new Schema({ @@ -15,6 +16,10 @@ const workspaceSchema = new Schema({ type: String, required: true }, + autoCapitalization: { + type: Boolean, + default: true, + }, organization: { type: Schema.Types.ObjectId, ref: 'Organization', diff --git a/backend/src/routes/v2/workspace.ts b/backend/src/routes/v2/workspace.ts index 55299e575..4e48c9301 100644 --- a/backend/src/routes/v2/workspace.ts +++ b/backend/src/routes/v2/workspace.ts @@ -118,4 +118,19 @@ router.delete( // TODO - rewire dashboard to this route workspaceController.deleteWorkspaceMembership ); + +router.post( + '/:workspaceId/settings', + requireAuth({ + acceptedAuthModes: ['jwt'] + }), + requireWorkspaceAuth({ + acceptedRoles: [ADMIN, MEMBER] + }), + param('workspaceId').exists().trim(), + body('autoCapitalization').exists().trim().notEmpty(), + validateRequest, + workspaceController.toggleAutoCapitilzation +); + export default router;