62 lines
1.4 KiB
TypeScript
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 });
|
|
}
|