From 1f9970366c39324fb717fd1246566ba065eb4cf9 Mon Sep 17 00:00:00 2001 From: Akhil Meka Date: Thu, 1 May 2025 09:45:34 +0530 Subject: [PATCH] only show user's views --- src/view/view.controller.ts | 18 +++++------ src/view/view.service.ts | 61 +++++++++---------------------------- 2 files changed, 24 insertions(+), 55 deletions(-) diff --git a/src/view/view.controller.ts b/src/view/view.controller.ts index c2a917c..4f81ca3 100644 --- a/src/view/view.controller.ts +++ b/src/view/view.controller.ts @@ -1,13 +1,13 @@ -import { FastifyReply, FastifyRequest } from "fastify"; -import { CreateViewInput, UpdateViewInput } from "./view.schema"; +import { FastifyReply, FastifyRequest } from 'fastify'; +import { CreateViewInput, UpdateViewInput } from './view.schema'; import { createView, deleteView, getView, listViews, updateView, -} from "./view.service"; -import { PageQueryParams } from "../pagination"; +} from './view.service'; +import { PageQueryParams } from '../pagination'; export async function createViewHandler( req: FastifyRequest, @@ -29,7 +29,7 @@ export async function getViewHandler(req: FastifyRequest, res: FastifyReply) { try { const view = await getView(viewId, req.user.tenantId); if (view === null) - return res.code(404).send({ error: "resource not found" }); + return res.code(404).send({ error: 'resource not found' }); return res.code(200).send(view); } catch (err) { @@ -41,8 +41,8 @@ export async function listViewHandler(req: FastifyRequest, res: FastifyReply) { const params = req.query as PageQueryParams; try { - const views = await listViews(params, req.user.tenantId); - return res.code(200).send(views); + const views = await listViews(params, req.user); + return res.code(200).send({ views: views }); } catch (err) { return err; } @@ -58,7 +58,7 @@ export async function updateViewHandler( try { const updatedView = await updateView(viewId, input, req.user.tenantId); if (!updatedView) - return res.code(404).send({ error: "resource not found" }); + return res.code(404).send({ error: 'resource not found' }); return res.code(200).send(updateView); } catch (err) { @@ -75,7 +75,7 @@ export async function deleteViewHandler( try { const deleteResult = await deleteView(viewId); if (deleteResult.deletedCount == 0) - return res.code(404).send({ error: "resource not found" }); + return res.code(404).send({ error: 'resource not found' }); return res.code(204).send(); } catch (err) { diff --git a/src/view/view.service.ts b/src/view/view.service.ts index 58f68bf..9d8532d 100644 --- a/src/view/view.service.ts +++ b/src/view/view.service.ts @@ -1,12 +1,12 @@ -import { AuthenticatedUser } from "../auth"; -import { getFilterObject, getSortObject, PageQueryParams } from "../pagination"; -import { generateId } from "../utils/id"; +import { AuthenticatedUser } from '../auth'; +import { getFilterObject, getSortObject, PageQueryParams } from '../pagination'; +import { generateId } from '../utils/id'; import { CreateViewInput, UpdateViewInput, viewFields, viewModel, -} from "./view.schema"; +} from './view.schema'; export async function createView( input: CreateViewInput, @@ -26,53 +26,22 @@ export async function getView(viewId: string, tenantId: string) { }); } -export async function listViews(params: PageQueryParams, tenantId: string) { +export async function listViews( + params: PageQueryParams, + user: AuthenticatedUser +) { const page = params.page || 1; const pageSize = params.pageSize || 10; const sortObj = getSortObject(params, viewFields); const filterObj = getFilterObject(params, viewFields); - const viewList = await viewModel.aggregate([ - { - $match: { $and: [{ tenantId: tenantId }, ...filterObj] }, - }, - { - $project: { - _id: 1, - pid: 1, - name: 1, - collection: 1, - createdBy: 1, - hide: 1, - sort: 1, - group: 1, - filters: 1, - match: 1, - }, - }, - { - $facet: { - metadata: [{ $count: "count" }], - data: [ - { $sort: sortObj }, - { $skip: (page - 1) * pageSize }, - { $limit: pageSize }, - ], - }, - }, - ]); - - if (viewList[0].data.length === 0) - return { views: [], metadata: { count: 0, page, pageSize } }; - - return { - permits: viewList[0]?.data, - metadata: { - count: viewList[0].metadata[0].count, - page, - pageSize, - }, - }; + return await viewModel.find({ + $and: [ + { tenantId: user.tenantId }, + { createdBy: user.userId }, + ...filterObj, + ], + }); } export async function updateView(