Cleanup SQS flag from view search

This commit is contained in:
Adria Navarro 2024-10-21 13:03:22 +02:00
parent e50f2cc84e
commit 5b1ed8195a
1 changed files with 8 additions and 44 deletions

View File

@ -1,11 +1,7 @@
import { import {
EmptyFilterOption, EmptyFilterOption,
FeatureFlag,
LegacyFilter,
LogicalOperator,
Row, Row,
RowSearchParams, RowSearchParams,
SearchFilterKey,
SearchResponse, SearchResponse,
SortOrder, SortOrder,
Table, Table,
@ -18,7 +14,6 @@ import { ExportRowsParams, ExportRowsResult } from "./search/types"
import { dataFilters } from "@budibase/shared-core" import { dataFilters } from "@budibase/shared-core"
import sdk from "../../index" import sdk from "../../index"
import { checkFilters, searchInputMapping } from "./search/utils" import { checkFilters, searchInputMapping } from "./search/utils"
import { db, features } from "@budibase/backend-core"
import tracer from "dd-trace" import tracer from "dd-trace"
import { getQueryableFields, removeInvalidFilters } from "./queryUtils" import { getQueryableFields, removeInvalidFilters } from "./queryUtils"
import { enrichSearchContext } from "../../../api/controllers/row/utils" import { enrichSearchContext } from "../../../api/controllers/row/utils"
@ -102,36 +97,6 @@ export async function search(
viewQuery = checkFilters(table, viewQuery) viewQuery = checkFilters(table, viewQuery)
delete viewQuery?.onEmptyFilter delete viewQuery?.onEmptyFilter
const sqsEnabled = await features.flags.isEnabled(FeatureFlag.SQS)
const supportsLogicalOperators =
isExternalTableID(view.tableId) || sqsEnabled
if (!supportsLogicalOperators) {
// In the unlikely event that a Grouped Filter is in a non-SQS environment
// It needs to be ignored entirely
let queryFilters: LegacyFilter[] = Array.isArray(view.query)
? view.query
: []
delete options.query.onEmptyFilter
// Extract existing fields
const existingFields =
queryFilters
?.filter(filter => filter.field)
.map(filter => db.removeKeyNumbering(filter.field)) || []
// Carry over filters for unused fields
Object.keys(options.query).forEach(key => {
const operator = key as Exclude<SearchFilterKey, LogicalOperator>
Object.keys(options.query[operator] || {}).forEach(field => {
if (!existingFields.includes(db.removeKeyNumbering(field))) {
viewQuery[operator]![field] = options.query[operator]![field]
}
})
})
options.query = viewQuery
} else {
const conditions = viewQuery ? [viewQuery] : [] const conditions = viewQuery ? [viewQuery] : []
options.query = { options.query = {
$and: { $and: {
@ -142,7 +107,6 @@ export async function search(
options.query.onEmptyFilter = viewQuery.onEmptyFilter options.query.onEmptyFilter = viewQuery.onEmptyFilter
} }
} }
}
options.query = dataFilters.cleanupQuery(options.query) options.query = dataFilters.cleanupQuery(options.query)
options.query = dataFilters.fixupFilterArrays(options.query) options.query = dataFilters.fixupFilterArrays(options.query)