fix: bugs in taggedUsers filter
This commit is contained in:
@@ -7,7 +7,12 @@ import {
|
||||
} from "./rts.schema";
|
||||
import { AuthenticatedUser } from "../auth";
|
||||
import { generateId } from "../utils/id";
|
||||
import { getFilterObject, getSortObject, PageQueryParams } from "../pagination";
|
||||
import {
|
||||
getFilterObject,
|
||||
getSortObject,
|
||||
getTaggedUsersFilter,
|
||||
PageQueryParams,
|
||||
} from "../pagination";
|
||||
import { getUserWithoutPopulate } from "../user/user.service";
|
||||
import mongoose from "mongoose";
|
||||
import { rtsPipeline } from "../utils/pipeline";
|
||||
@@ -79,38 +84,12 @@ export async function listRts(
|
||||
filterObj.push({ client: new mongoose.Types.ObjectId(user.orgId) });
|
||||
}
|
||||
|
||||
const taggedUserFilterIndex = filterObj.findIndex((item) =>
|
||||
Object.keys(item).includes("taggedUsers")
|
||||
let { taggedFilter, taggedUserFilterIndex } = getTaggedUsersFilter(
|
||||
filterObj,
|
||||
sortObj
|
||||
);
|
||||
|
||||
let taggedFilter = [];
|
||||
if (taggedUserFilterIndex != -1) {
|
||||
const filterItem = filterObj[taggedUserFilterIndex].taggedUsers;
|
||||
let filterValues = null;
|
||||
|
||||
if (filterItem["$eq"]) filterValues = [filterItem["$eq"]];
|
||||
else filterValues = filterItem["$in"];
|
||||
|
||||
filterValues = filterValues.map((item) => item.toString());
|
||||
|
||||
taggedFilter = [
|
||||
{
|
||||
$addFields: {
|
||||
taggedUsers: {
|
||||
$filter: {
|
||||
input: "$taggedUsers",
|
||||
as: "user",
|
||||
cond: { $in: ["$$user.userId", filterValues] },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{ $match: { "taggedUsers.0": { $exists: true } } },
|
||||
{ $sort: { "taggedUsers.taggedAt": sortObj.taggedUsers ?? -1 } },
|
||||
];
|
||||
|
||||
filterObj.splice(taggedUserFilterIndex, 1);
|
||||
}
|
||||
if (taggedUserFilterIndex != -1) filterObj.splice(taggedUserFilterIndex, 1);
|
||||
|
||||
const rtsList = await rtsModel.aggregate([
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user