1
0
Fork 0
mirror of synced 2024-10-05 04:25:21 +13:00

Merge branch 'master' into chore/search-tests-from-views

This commit is contained in:
Adria Navarro 2024-10-02 16:55:13 +02:00 committed by GitHub
commit 576ebc997e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 12 additions and 6 deletions

View file

@ -1,5 +1,5 @@
export * as utils from "./utils" export * as utils from "./utils"
export { default as Sql } from "./sql" export { default as Sql, COUNT_FIELD_NAME } from "./sql"
export { default as SqlTable } from "./sqlTable" export { default as SqlTable } from "./sqlTable"
export * as designDoc from "./designDoc" export * as designDoc from "./designDoc"

View file

@ -43,6 +43,8 @@ import { cloneDeep } from "lodash"
type QueryFunction = (query: SqlQuery | SqlQuery[], operation: Operation) => any type QueryFunction = (query: SqlQuery | SqlQuery[], operation: Operation) => any
export const COUNT_FIELD_NAME = "__bb_total"
function getBaseLimit() { function getBaseLimit() {
const envLimit = environment.SQL_MAX_ROWS const envLimit = environment.SQL_MAX_ROWS
? parseInt(environment.SQL_MAX_ROWS) ? parseInt(environment.SQL_MAX_ROWS)
@ -846,7 +848,7 @@ class InternalBuilder {
throw new Error("SQL counting requires primary key to be supplied") throw new Error("SQL counting requires primary key to be supplied")
} }
return query.countDistinct( return query.countDistinct(
`${this.getTableName()}.${this.table.primary[0]} as __bb_total` `${this.getTableName()}.${this.table.primary[0]} as ${COUNT_FIELD_NAME}`
) )
} }

View file

@ -63,7 +63,7 @@
// Look up the component tree and find something that is provided by an // Look up the component tree and find something that is provided by an
// ancestor that matches our datasource. This is for backwards compatibility // ancestor that matches our datasource. This is for backwards compatibility
// as previously we could use the "closest" context. // as previously we could use the "closest" context.
for (let id of path.reverse().slice(1)) { for (let id of path.toReversed().slice(1)) {
// Check for matching view datasource // Check for matching view datasource
if ( if (
dataSource.type === "viewV2" && dataSource.type === "viewV2" &&

View file

@ -20,7 +20,7 @@ import { Format } from "../../../api/controllers/view/exporters"
import sdk from "../.." import sdk from "../.."
import { extractViewInfoFromID, isRelationshipColumn } from "../../../db/utils" import { extractViewInfoFromID, isRelationshipColumn } from "../../../db/utils"
import { isSQL } from "../../../integrations/utils" import { isSQL } from "../../../integrations/utils"
import { docIds } from "@budibase/backend-core" import { docIds, sql } from "@budibase/backend-core"
import { getTableFromSource } from "../../../api/controllers/row/utils" import { getTableFromSource } from "../../../api/controllers/row/utils"
const SQL_CLIENT_SOURCE_MAP: Record<SourceName, SqlClient | undefined> = { const SQL_CLIENT_SOURCE_MAP: Record<SourceName, SqlClient | undefined> = {
@ -57,8 +57,12 @@ export function getSQLClient(datasource: Datasource): SqlClient {
export function processRowCountResponse( export function processRowCountResponse(
response: DatasourcePlusQueryResponse response: DatasourcePlusQueryResponse
): number { ): number {
if (response && response.length === 1 && "__bb_total" in response[0]) { if (
const total = response[0].__bb_total response &&
response.length === 1 &&
sql.COUNT_FIELD_NAME in response[0]
) {
const total = response[0][sql.COUNT_FIELD_NAME]
return typeof total === "number" ? total : parseInt(total) return typeof total === "number" ? total : parseInt(total)
} else { } else {
throw new Error("Unable to count rows in query - no count response") throw new Error("Unable to count rows in query - no count response")