Skip to content

Commit 084d08f

Browse files
authored
Merge pull request #1650 from line/fix/fix-filter-bug-in-mysql
fix: fix filter bug in mysql
2 parents d909824 + 324c9dc commit 084d08f

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

apps/api/src/domains/admin/feedback/feedback.mysql.service.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -370,21 +370,27 @@ export class FeedbackMySQLService {
370370
SELECT feedbacks_id
371371
FROM feedbacks_issues_issues
372372
GROUP BY feedbacks_id
373-
HAVING COUNT(DISTINCT issues_id) = :arrayLength
374-
AND COUNT(DISTINCT CASE WHEN issues_id IN (:...issueIds) THEN issues_id END) = :arrayLength
373+
HAVING COUNT(DISTINCT issues_id) = :arrayLength${paramName}
374+
AND COUNT(DISTINCT CASE WHEN issues_id IN (:...issueIds${paramName}) THEN issues_id END) = :arrayLength${paramName}
375375
)`,
376-
{ arrayLength: issueIds.length, issueIds },
376+
{
377+
[`arrayLength${paramName}`]: issueIds.length,
378+
[`issueIds${paramName}`]: issueIds,
379+
},
377380
);
378381
} else if (condition === QueryV2ConditionsEnum.CONTAINS) {
379382
qb[method](
380383
`feedbacks.id IN (
381384
SELECT feedbacks_id
382385
FROM feedbacks_issues_issues
383-
WHERE issues_id IN (:...issueIds)
386+
WHERE issues_id IN (:...issueIds${paramName})
384387
GROUP BY feedbacks_id
385-
HAVING COUNT(DISTINCT issues_id) = :arrayLength
388+
HAVING COUNT(DISTINCT issues_id) = :arrayLength${paramName}
386389
)`,
387-
{ arrayLength: issueIds.length, issueIds },
390+
{
391+
[`arrayLength${paramName}`]: issueIds.length,
392+
[`issueIds${paramName}`]: issueIds,
393+
},
388394
);
389395
}
390396
} else if (fieldKey === 'updatedAt') {
@@ -415,28 +421,28 @@ export class FeedbackMySQLService {
415421

416422
if (condition === QueryV2ConditionsEnum.IS) {
417423
qb[method](
418-
`JSON_LENGTH(JSON_EXTRACT(feedbacks.data, '$."${fieldKey}"')) = :arrayLength AND JSON_CONTAINS(
424+
`JSON_LENGTH(JSON_EXTRACT(feedbacks.data, '$."${fieldKey}"')) = :arrayLength${paramName} AND JSON_CONTAINS(
419425
(SELECT JSON_ARRAYAGG(jt.value) FROM JSON_TABLE(
420426
JSON_EXTRACT(feedbacks.data, '$."${fieldKey}"'),
421427
'$[*]' COLUMNS(value VARCHAR(255) PATH '$')
422428
) AS jt),
423429
JSON_ARRAY(${values.map((optionKey) => `'${optionKey}'`).join(', ')}),
424430
'$'
425431
)`,
426-
{ arrayLength: values.length },
432+
{ [`arrayLength${paramName}`]: values.length },
427433
);
428434
} else if (condition === QueryV2ConditionsEnum.CONTAINS) {
429435
if (values.length > 0) {
430436
qb[method](
431-
`JSON_LENGTH(JSON_EXTRACT(feedbacks.data, '$."${fieldKey}"')) >= :arrayLength AND JSON_CONTAINS(
437+
`JSON_LENGTH(JSON_EXTRACT(feedbacks.data, '$."${fieldKey}"')) >= :arrayLength${paramName} AND JSON_CONTAINS(
432438
(SELECT JSON_ARRAYAGG(jt.value) FROM JSON_TABLE(
433439
JSON_EXTRACT(feedbacks.data, '$."${fieldKey}"'),
434440
'$[*]' COLUMNS(value VARCHAR(255) PATH '$')
435441
) AS jt),
436442
JSON_ARRAY(${values.map((optionKey) => `'${optionKey}'`).join(', ')}),
437443
'$'
438444
)`,
439-
{ arrayLength: values.length },
445+
{ [`arrayLength${paramName}`]: values.length },
440446
);
441447
} else {
442448
qb[method]('1 = 0');

0 commit comments

Comments
 (0)