Files
permit-api/src/view/view.service.ts
2025-05-03 18:15:31 +05:30

62 lines
1.4 KiB
TypeScript

import { AuthenticatedUser } from "../auth";
import { getFilterObject, getSortObject, PageQueryParams } from "../pagination";
import { generateId } from "../utils/id";
import {
CreateViewInput,
UpdateViewInput,
viewFields,
viewModel,
} from "./view.schema";
export async function createView(
input: CreateViewInput,
user: AuthenticatedUser
) {
return await viewModel.create({
tenantId: user.tenantId,
pid: generateId(),
createdBy: user.userId,
...input,
});
}
export async function getView(viewId: string, tenantId: string) {
return await viewModel.findOne({
$and: [{ pid: viewId }, { tenantId: tenantId }],
});
}
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);
return await viewModel.find({
$and: [
{ tenantId: user.tenantId },
{ createdBy: user.userId },
...filterObj,
],
});
}
export async function updateView(
viewId: string,
input: UpdateViewInput,
tenantId: string
) {
return await viewModel.findOneAndUpdate(
{ $and: [{ pid: viewId }, { tenantId: tenantId }] },
{ ...input },
{ new: true }
);
}
export async function deleteView(viewId: string) {
return await viewModel.deleteOne({ pid: viewId });
}