1
0
Fork 0
mirror of synced 2024-08-23 05:51:29 +12:00

Fix for issue with templated apps - some template apps are *very* old and therefore don't necessarily abide by the rules that are generally followed for new apps, this is something we should resolve, but for now adding an option that allows searching for only a specific document type.

This commit is contained in:
mike12345567 2024-05-28 18:30:06 +01:00
parent 0ea5235797
commit cb99007a42
3 changed files with 26 additions and 4 deletions

View file

@ -1,6 +1,11 @@
import { Knex, knex } from "knex"
import * as dbCore from "../db"
import { isIsoDateString, isValidFilter, getNativeSql } from "./utils"
import {
isIsoDateString,
isValidFilter,
getNativeSql,
isExternalTable,
} from "./utils"
import { SqlStatements } from "./sqlStatements"
import SqlTableQueryBuilder from "./sqlTable"
import {
@ -21,6 +26,7 @@ import {
SqlClient,
QueryOptions,
JsonTypes,
prefixed,
} from "@budibase/types"
import environment from "../environment"
import { helpers } from "@budibase/shared-core"
@ -556,8 +562,15 @@ class InternalBuilder {
}
read(knex: Knex, json: QueryJson, limit: number): Knex.QueryBuilder {
let { endpoint, resource, filters, paginate, relationships, tableAliases } =
json
let {
endpoint,
resource,
filters,
paginate,
relationships,
tableAliases,
meta,
} = json
const tableName = endpoint.entityId
// select all if not specified
@ -592,6 +605,12 @@ class InternalBuilder {
query = this.addFilters(query, filters, json.meta.table, {
aliases: tableAliases,
})
// when searching internal tables make sure long looking for rows
if (meta.documentType && !isExternalTable(meta.table)) {
query.andWhereLike("_id", `${prefixed(meta.documentType)}%`)
}
// add sorting to pre-query
query = this.addSorting(query, json)
const alias = tableAliases?.[tableName] || tableName

View file

@ -1,4 +1,5 @@
import {
DocumentType,
FieldType,
Operation,
QueryJson,
@ -153,6 +154,7 @@ export async function search(
meta: {
table,
tables: allTablesMap,
documentType: DocumentType.ROW,
},
resource: {
fields: buildInternalFieldList(table, allTables),

View file

@ -1,5 +1,5 @@
import { Operation, SortDirection } from "./datasources"
import { Row, Table } from "../documents"
import { Row, Table, DocumentType } from "../documents"
import { SortType } from "../api"
import { Knex } from "knex"
@ -117,6 +117,7 @@ export interface QueryJson {
table: Table
tables?: Record<string, Table>
renamed?: RenameColumn
documentType?: DocumentType
}
extra?: {
idFilter?: SearchFilters