Skip to content

Commit c2d8e58

Browse files
committed
fix: filtering records on form name would break query
1 parent 8a71003 commit c2d8e58

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

src/utils/filter/getFilter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ const buildMongoFilter = (filter: any, fields: any[]): any => {
171171
}
172172
case 'contains': {
173173
if (MULTISELECT_TYPES.includes(field.type)) {
174-
console.log(value);
175174
if (Array.isArray(value)) {
176175
return { [fieldName]: { $all: value } };
177176
} else {

src/utils/schema/resolvers/Query/getAfterLookupsFilter.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,14 @@ const buildAfterLookupsMongoFilter = (
5555
//
5656
let fieldName: string;
5757
if (['form', 'lastUpdateForm'].includes(filter.field)) {
58-
filter.value = mongoose.Types.ObjectId(filter.value);
59-
fieldName = `_${filter.field}._id`;
58+
// If value is an ID, search for exact ID
59+
if (mongoose.isValidObjectId(filter.value)) {
60+
filter.value = mongoose.Types.ObjectId(filter.value);
61+
fieldName = `_${filter.field}._id`;
62+
} else {
63+
// Else, search for the name
64+
fieldName = `_${filter.field}.name`;
65+
}
6066
} else {
6167
fieldName = `_${field}.user.${subField}`;
6268
}

src/utils/schema/resolvers/Query/getFilter.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,13 @@ const buildMongoFilter = (
122122
_id: { $in: filter.value.map((x) => mongoose.Types.ObjectId(x)) },
123123
};
124124
}
125-
if (filter.field === 'form') {
126-
filter.value = mongoose.Types.ObjectId(filter.value);
127-
fieldName = '_form._id';
128-
}
129-
if (filter.field === 'lastUpdateForm') {
130-
filter.value = mongoose.Types.ObjectId(filter.value);
131-
fieldName = '_lastUpdateForm._id';
125+
if (['form', 'lastUpdateForm'].includes(filter.field)) {
126+
if (mongoose.isValidObjectId(filter.value)) {
127+
filter.value = mongoose.Types.ObjectId(filter.value);
128+
fieldName = `_${filter.field}._id`;
129+
} else {
130+
fieldName = `_${filter.field}.name`;
131+
}
132132
}
133133

134134
const isAttributeFilter = filter.field.startsWith('$attribute.');

0 commit comments

Comments
 (0)