fix: negative open source filter not working (#5960)
* fix bools being quoted in search filters elsewhere * rename function
This commit is contained in:
@@ -474,22 +474,23 @@ export function useSearch(
|
|||||||
}
|
}
|
||||||
orGroups[field].push(val)
|
orGroups[field].push(val)
|
||||||
} else {
|
} else {
|
||||||
parts.push(`${field} = ${val === 'true' || val === 'false' ? val : `"${val}"`}`)
|
parts.push(`${field} = ${enquoteNonBools(val)}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [field, values] of Object.entries(orGroups)) {
|
for (const [field, values] of Object.entries(orGroups)) {
|
||||||
if (values.length === 1) {
|
if (values.length === 1) {
|
||||||
parts.push(`${field} = "${values[0]}"`)
|
const val = values[0]
|
||||||
|
parts.push(`${field} = ${enquoteNonBools(val)}`)
|
||||||
} else {
|
} else {
|
||||||
const quoted = values.map((v) => `"${v}"`).join(', ')
|
const quoted = values.map(enquoteNonBools).join(', ')
|
||||||
parts.push(`${field} IN [${quoted}]`)
|
parts.push(`${field} IN [${quoted}]`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [field, values] of Object.entries(negativeByType)) {
|
for (const [field, values] of Object.entries(negativeByType)) {
|
||||||
const quoted = values.map((v) => `"${v}"`).join(', ')
|
const quoted = values.map(enquoteNonBools).join(', ')
|
||||||
parts.push(`${field} NOT IN [${quoted}]`)
|
parts.push(`${field} NOT IN [${quoted}]`)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -503,11 +504,11 @@ export function useSearch(
|
|||||||
for (const envGroup of getEnvironmentFilterGroups(client, server)) {
|
for (const envGroup of getEnvironmentFilterGroups(client, server)) {
|
||||||
if (envGroup.length === 1) {
|
if (envGroup.length === 1) {
|
||||||
const [field, val] = envGroup[0].split(':')
|
const [field, val] = envGroup[0].split(':')
|
||||||
parts.push(`${field} = "${val}"`)
|
parts.push(`${field} = ${enquoteNonBools(val)}`)
|
||||||
} else if (envGroup.length > 1) {
|
} else if (envGroup.length > 1) {
|
||||||
const conditions = envGroup.map((f) => {
|
const conditions = envGroup.map((f) => {
|
||||||
const [field, val] = f.split(':')
|
const [field, val] = f.split(':')
|
||||||
return `${field} = "${val}"`
|
return `${field} = ${enquoteNonBools(val)}`
|
||||||
})
|
})
|
||||||
parts.push(`(${conditions.join(' OR ')})`)
|
parts.push(`(${conditions.join(' OR ')})`)
|
||||||
}
|
}
|
||||||
@@ -516,9 +517,9 @@ export function useSearch(
|
|||||||
// Project types
|
// Project types
|
||||||
const mappedProjectTypes = projectTypes.value.map(mapProjectTypeToSearch)
|
const mappedProjectTypes = projectTypes.value.map(mapProjectTypeToSearch)
|
||||||
if (mappedProjectTypes.length === 1) {
|
if (mappedProjectTypes.length === 1) {
|
||||||
parts.push(`project_types = "${mappedProjectTypes[0]}"`)
|
parts.push(`project_types = ${enquoteNonBools(mappedProjectTypes[0])}`)
|
||||||
} else if (mappedProjectTypes.length > 1) {
|
} else if (mappedProjectTypes.length > 1) {
|
||||||
const quoted = mappedProjectTypes.map((v) => `"${v}"`).join(', ')
|
const quoted = mappedProjectTypes.map(enquoteNonBools).join(', ')
|
||||||
parts.push(`project_types IN [${quoted}]`)
|
parts.push(`project_types IN [${quoted}]`)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -781,6 +782,13 @@ function getEnvironmentFilterGroups(client: boolean, server: boolean): string[][
|
|||||||
return groups
|
return groups
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function enquoteNonBools(value: string): string {
|
||||||
|
if (value === 'true' || value === 'false') {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return `"${value}"`
|
||||||
|
}
|
||||||
|
|
||||||
function getOptionValue(option: FilterOption, negative?: boolean): string {
|
function getOptionValue(option: FilterOption, negative?: boolean): string {
|
||||||
let value = option.method === 'or' || option.method === 'and' ? option.value : option.id
|
let value = option.method === 'or' || option.method === 'and' ? option.value : option.id
|
||||||
if (negative === true) {
|
if (negative === true) {
|
||||||
|
|||||||
Reference in New Issue
Block a user