This commit is contained in:
Sam Rose 2024-07-08 13:28:48 +01:00
parent 37d53cff20
commit 1851e11bc0
No known key found for this signature in database
5 changed files with 22 additions and 10 deletions

View File

@ -1,6 +1,8 @@
import { getCouchInfo } from "./connections"
import fetch from "node-fetch"
import { checkSlashesInUrl } from "../../helpers"
import * as context from "../../context"
import env from "../../environment"
export async function directCouchCall(
path: string,
@ -53,3 +55,11 @@ export async function directCouchQuery(
throw "Cannot connect to CouchDB instance"
}
}
export function isSqsEnabledForTenant(): boolean {
const tenantId = context.getTenantId()
return (
env.SQS_SEARCH_ENABLE !== undefined &&
env.SQS_SEARCH_ENABLE_TENANTS.includes(tenantId)
)
}

View File

@ -116,6 +116,8 @@ const environment = {
COUCH_DB_URL: process.env.COUCH_DB_URL || "http://localhost:4005",
COUCH_DB_SQL_URL: process.env.COUCH_DB_SQL_URL || "http://localhost:4006",
SQS_SEARCH_ENABLE: process.env.SQS_SEARCH_ENABLE,
SQS_SEARCH_ENABLE_TENANTS:
process.env.SQS_SEARCH_ENABLE_TENANTS?.split(",") || [],
COUCH_DB_USERNAME: process.env.COUCH_DB_USER,
COUCH_DB_PASSWORD: process.env.COUCH_DB_PASSWORD,
GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,

View File

@ -15,7 +15,7 @@ import { getViews, saveView } from "../view/utils"
import viewTemplate from "../view/viewBuilder"
import { cloneDeep } from "lodash/fp"
import { quotas } from "@budibase/pro"
import { events, context } from "@budibase/backend-core"
import { events, context, db } from "@budibase/backend-core"
import {
AutoFieldSubType,
ContextUser,
@ -324,7 +324,7 @@ class TableSaveFunctions {
importRows: this.importRows,
user: this.user,
})
if (env.SQS_SEARCH_ENABLE) {
if (db.isSqsEnabledForTenant()) {
await sdk.tables.sqs.addTable(table)
}
return table
@ -498,16 +498,16 @@ export function setStaticSchemas(datasource: Datasource, table: Table) {
}
export async function internalTableCleanup(table: Table, rows?: Row[]) {
const db = context.getAppDB()
const appDb = context.getAppDB()
const tableId = table._id!
// remove table search index
if (!env.isTest() || env.COUCH_DB_URL) {
const currentIndexes = await db.getIndexes()
const currentIndexes = await appDb.getIndexes()
const existingIndex = currentIndexes.indexes.find(
(existing: any) => existing.name === `search:${tableId}`
)
if (existingIndex) {
await db.deleteIndex(existingIndex)
await appDb.deleteIndex(existingIndex)
}
}
@ -518,7 +518,7 @@ export async function internalTableCleanup(table: Table, rows?: Row[]) {
if (rows) {
await AttachmentCleanup.tableDelete(table, rows)
}
if (env.SQS_SEARCH_ENABLE) {
if (db.isSqsEnabledForTenant()) {
await sdk.tables.sqs.removeTable(table)
}
}

View File

@ -12,11 +12,11 @@ import * as internal from "./search/internal"
import * as external from "./search/external"
import { NoEmptyFilterStrings } from "../../../constants"
import * as sqs from "./search/sqs"
import env from "../../../environment"
import { ExportRowsParams, ExportRowsResult } from "./search/types"
import { dataFilters } from "@budibase/shared-core"
import sdk from "../../index"
import { searchInputMapping } from "./search/utils"
import { db } from "@budibase/backend-core"
export { isValidFilter } from "../../../integrations/utils"
@ -115,7 +115,7 @@ export async function search(
if (isExternalTable) {
return external.search(options, table)
} else if (env.SQS_SEARCH_ENABLE) {
} else if (db.isSqsEnabledForTenant()) {
return sqs.search(options, table)
} else {
return internal.search(options, table)

View File

@ -1,4 +1,4 @@
import { context } from "@budibase/backend-core"
import { context, db } from "@budibase/backend-core"
import { getTableParams } from "../../../db/utils"
import {
breakExternalTableId,
@ -34,7 +34,7 @@ export function processTable(table: Table): Table {
sourceId: table.sourceId || INTERNAL_TABLE_SOURCE_ID,
sourceType: TableSourceType.INTERNAL,
}
if (env.SQS_SEARCH_ENABLE) {
if (db.isSqsEnabledForTenant()) {
processed.sql = !!env.SQS_SEARCH_ENABLE
}
return processed