Merge branch 'master' into return-unauthorized-instead-of-forbidden
This commit is contained in:
commit
1f2dab71eb
|
@ -819,7 +819,10 @@ describe.each([
|
||||||
const table = await config.api.table.save(tableRequest)
|
const table = await config.api.table.save(tableRequest)
|
||||||
|
|
||||||
const stringValue = generator.word()
|
const stringValue = generator.word()
|
||||||
const naturalValue = generator.integer({ min: 0, max: 1000 })
|
|
||||||
|
// MySQL and MariaDB auto-increment fields have a minimum value of 1. If
|
||||||
|
// you try to save a row with a value of 0 it will use 1 instead.
|
||||||
|
const naturalValue = generator.integer({ min: 1, max: 1000 })
|
||||||
|
|
||||||
const existing = await config.api.row.save(table._id!, {
|
const existing = await config.api.row.save(table._id!, {
|
||||||
string: stringValue,
|
string: stringValue,
|
||||||
|
|
|
@ -45,13 +45,10 @@ import {
|
||||||
getTableIDList,
|
getTableIDList,
|
||||||
} from "./filters"
|
} from "./filters"
|
||||||
import { dataFilters } from "@budibase/shared-core"
|
import { dataFilters } from "@budibase/shared-core"
|
||||||
import { DEFAULT_TABLE_IDS } from "../../../../constants"
|
|
||||||
|
|
||||||
const builder = new sql.Sql(SqlClient.SQL_LITE)
|
const builder = new sql.Sql(SqlClient.SQL_LITE)
|
||||||
const MISSING_COLUMN_REGEX = new RegExp(`no such column: .+`)
|
const MISSING_COLUMN_REGEX = new RegExp(`no such column: .+`)
|
||||||
const USER_COLUMN_PREFIX_REGEX = new RegExp(
|
const MISSING_TABLE_REGX = new RegExp(`no such table: .+`)
|
||||||
`no such column: .+${USER_COLUMN_PREFIX}`
|
|
||||||
)
|
|
||||||
|
|
||||||
function buildInternalFieldList(
|
function buildInternalFieldList(
|
||||||
table: Table,
|
table: Table,
|
||||||
|
@ -240,10 +237,10 @@ async function runSqlQuery(
|
||||||
function resyncDefinitionsRequired(status: number, message: string) {
|
function resyncDefinitionsRequired(status: number, message: string) {
|
||||||
// pre data_ prefix on column names, need to resync
|
// pre data_ prefix on column names, need to resync
|
||||||
return (
|
return (
|
||||||
(status === 400 && message?.match(USER_COLUMN_PREFIX_REGEX)) ||
|
// there are tables missing - try a resync
|
||||||
// default tables aren't included in definition
|
(status === 400 && message.match(MISSING_TABLE_REGX)) ||
|
||||||
(status === 400 &&
|
// there are columns missing - try a resync
|
||||||
DEFAULT_TABLE_IDS.find(tableId => message?.includes(tableId))) ||
|
(status === 400 && message.match(MISSING_COLUMN_REGEX)) ||
|
||||||
// no design document found, needs a full sync
|
// no design document found, needs a full sync
|
||||||
(status === 404 && message?.includes(SQLITE_DESIGN_DOC_ID))
|
(status === 404 && message?.includes(SQLITE_DESIGN_DOC_ID))
|
||||||
)
|
)
|
||||||
|
@ -251,7 +248,8 @@ function resyncDefinitionsRequired(status: number, message: string) {
|
||||||
|
|
||||||
export async function search(
|
export async function search(
|
||||||
options: RowSearchParams,
|
options: RowSearchParams,
|
||||||
table: Table
|
table: Table,
|
||||||
|
opts?: { retrying?: boolean }
|
||||||
): Promise<SearchResponse<Row>> {
|
): Promise<SearchResponse<Row>> {
|
||||||
let { paginate, query, ...params } = options
|
let { paginate, query, ...params } = options
|
||||||
|
|
||||||
|
@ -376,9 +374,9 @@ export async function search(
|
||||||
return response
|
return response
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
const msg = typeof err === "string" ? err : err.message
|
const msg = typeof err === "string" ? err : err.message
|
||||||
if (resyncDefinitionsRequired(err.status, msg)) {
|
if (!opts?.retrying && resyncDefinitionsRequired(err.status, msg)) {
|
||||||
await sdk.tables.sqs.syncDefinition()
|
await sdk.tables.sqs.syncDefinition()
|
||||||
return search(options, table)
|
return search(options, table, { retrying: true })
|
||||||
}
|
}
|
||||||
// previously the internal table didn't error when a column didn't exist in search
|
// previously the internal table didn't error when a column didn't exist in search
|
||||||
if (err.status === 400 && msg?.match(MISSING_COLUMN_REGEX)) {
|
if (err.status === 400 && msg?.match(MISSING_COLUMN_REGEX)) {
|
||||||
|
|
Loading…
Reference in New Issue