Merge branch 'master' into fix/client-error-svg-2
This commit is contained in:
commit
5ecfce1d6f
|
@ -155,7 +155,7 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
datasource:
|
datasource:
|
||||||
[mssql, mysql, postgres, mongodb, mariadb, oracle, sqs, none]
|
[mssql, mysql, postgres, postgres_legacy, mongodb, mariadb, oracle, sqs, none]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
@ -190,6 +190,8 @@ jobs:
|
||||||
docker pull mariadb@${{ steps.dotenv.outputs.MARIADB_SHA }}
|
docker pull mariadb@${{ steps.dotenv.outputs.MARIADB_SHA }}
|
||||||
elif [ "${{ matrix.datasource }}" == "oracle" ]; then
|
elif [ "${{ matrix.datasource }}" == "oracle" ]; then
|
||||||
docker pull budibase/oracle-database:23.2-slim-faststart
|
docker pull budibase/oracle-database:23.2-slim-faststart
|
||||||
|
elif [ "${{ matrix.datasource }}" == "postgres_legacy" ]; then
|
||||||
|
docker pull postgres:9.5.25
|
||||||
fi
|
fi
|
||||||
docker pull minio/minio &
|
docker pull minio/minio &
|
||||||
docker pull redis &
|
docker pull redis &
|
||||||
|
|
|
@ -1244,9 +1244,9 @@ ms@^2.1.1:
|
||||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
|
|
||||||
nanoid@^3.3.6:
|
nanoid@^3.3.6:
|
||||||
version "3.3.7"
|
version "3.3.8"
|
||||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
|
||||||
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
|
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
|
||||||
|
|
||||||
natural-compare@^1.4.0:
|
natural-compare@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||||
"version": "3.2.27",
|
"version": "3.2.28",
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"concurrency": 20,
|
"concurrency": 20,
|
||||||
"command": {
|
"command": {
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"dev": "vite build --watch"
|
"dev": "vite build --watch --mode=dev"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "*",
|
"@budibase/bbui": "*",
|
||||||
|
|
|
@ -25,8 +25,8 @@ export default defineConfig(({ mode }) => {
|
||||||
outDir: "dist",
|
outDir: "dist",
|
||||||
name: "budibase_client",
|
name: "budibase_client",
|
||||||
fileName: () => "budibase-client.js",
|
fileName: () => "budibase-client.js",
|
||||||
minify: isProduction,
|
|
||||||
},
|
},
|
||||||
|
minify: isProduction,
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
svelte({
|
svelte({
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 977baca179fef1192f8fe051122288a4128f7a63
|
Subproject commit e7c9f08aeb0498a20594f3c912afedcfdc220a6a
|
|
@ -596,7 +596,7 @@ const datasources = datasourceDescribe({
|
||||||
if (datasources.length) {
|
if (datasources.length) {
|
||||||
describe.each(datasources)(
|
describe.each(datasources)(
|
||||||
"$dbName",
|
"$dbName",
|
||||||
({ config, dsProvider, isPostgres, isMySQL, isMariaDB }) => {
|
({ config, dsProvider, isPostgres, isLegacy, isMySQL, isMariaDB }) => {
|
||||||
let datasource: Datasource
|
let datasource: Datasource
|
||||||
let client: Knex
|
let client: Knex
|
||||||
|
|
||||||
|
@ -647,6 +647,13 @@ if (datasources.length) {
|
||||||
// can load it. We're using postgres 16 in tests at the time of writing.
|
// can load it. We're using postgres 16 in tests at the time of writing.
|
||||||
schema = schema.replace("SET transaction_timeout = 0;", "")
|
schema = schema.replace("SET transaction_timeout = 0;", "")
|
||||||
}
|
}
|
||||||
|
if (isPostgres && isLegacy) {
|
||||||
|
// in older versions of Postgres, this is not a valid option - Postgres 9.5 does not support this.
|
||||||
|
schema = schema.replace(
|
||||||
|
"SET idle_in_transaction_session_timeout = 0;",
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
await config.api.table.destroy(table._id!, table._rev!)
|
await config.api.table.destroy(table._id!, table._rev!)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { Datasource, FieldType, Table } from "@budibase/types"
|
import { Datasource, FieldType, Table } from "@budibase/types"
|
||||||
import _ from "lodash"
|
|
||||||
import { generator } from "@budibase/backend-core/tests"
|
import { generator } from "@budibase/backend-core/tests"
|
||||||
import {
|
import {
|
||||||
DatabaseName,
|
DatabaseName,
|
||||||
|
@ -8,7 +7,9 @@ import {
|
||||||
} from "../integrations/tests/utils"
|
} from "../integrations/tests/utils"
|
||||||
import { Knex } from "knex"
|
import { Knex } from "knex"
|
||||||
|
|
||||||
const mainDescriptions = datasourceDescribe({ only: [DatabaseName.POSTGRES] })
|
const mainDescriptions = datasourceDescribe({
|
||||||
|
only: [DatabaseName.POSTGRES, DatabaseName.POSTGRES_LEGACY],
|
||||||
|
})
|
||||||
|
|
||||||
if (mainDescriptions.length) {
|
if (mainDescriptions.length) {
|
||||||
describe.each(mainDescriptions)(
|
describe.each(mainDescriptions)(
|
||||||
|
|
|
@ -173,8 +173,13 @@ class PostgresIntegration extends Sql implements DatasourcePlus {
|
||||||
`
|
`
|
||||||
|
|
||||||
COLUMNS_SQL = () => `
|
COLUMNS_SQL = () => `
|
||||||
select * from information_schema.columns where table_schema = ANY(current_schemas(false))
|
SELECT columns.*
|
||||||
AND pg_table_is_visible(to_regclass(format('%I.%I', table_schema, table_name)));
|
FROM information_schema.columns columns
|
||||||
|
JOIN pg_class pg_class ON pg_class.relname = columns.table_name
|
||||||
|
JOIN pg_namespace name_space ON name_space.oid = pg_class.relnamespace
|
||||||
|
WHERE columns.table_schema = ANY(current_schemas(false))
|
||||||
|
AND columns.table_schema = name_space.nspname
|
||||||
|
AND pg_table_is_visible(pg_class.oid);
|
||||||
`
|
`
|
||||||
|
|
||||||
constructor(config: PostgresConfig) {
|
constructor(config: PostgresConfig) {
|
||||||
|
|
|
@ -9,5 +9,6 @@ dotenv.config({
|
||||||
export const MSSQL_IMAGE = `mcr.microsoft.com/mssql/server@${process.env.MSSQL_SHA}`
|
export const MSSQL_IMAGE = `mcr.microsoft.com/mssql/server@${process.env.MSSQL_SHA}`
|
||||||
export const MYSQL_IMAGE = `mysql@${process.env.MYSQL_SHA}`
|
export const MYSQL_IMAGE = `mysql@${process.env.MYSQL_SHA}`
|
||||||
export const POSTGRES_IMAGE = `postgres@${process.env.POSTGRES_SHA}`
|
export const POSTGRES_IMAGE = `postgres@${process.env.POSTGRES_SHA}`
|
||||||
|
export const POSTGRES_LEGACY_IMAGE = `postgres:9.5.25`
|
||||||
export const MONGODB_IMAGE = `mongo@${process.env.MONGODB_SHA}`
|
export const MONGODB_IMAGE = `mongo@${process.env.MONGODB_SHA}`
|
||||||
export const MARIADB_IMAGE = `mariadb@${process.env.MARIADB_SHA}`
|
export const MARIADB_IMAGE = `mariadb@${process.env.MARIADB_SHA}`
|
||||||
|
|
|
@ -16,6 +16,7 @@ export const { startContainer } = testContainerUtils
|
||||||
|
|
||||||
export enum DatabaseName {
|
export enum DatabaseName {
|
||||||
POSTGRES = "postgres",
|
POSTGRES = "postgres",
|
||||||
|
POSTGRES_LEGACY = "postgres_legacy",
|
||||||
MONGODB = "mongodb",
|
MONGODB = "mongodb",
|
||||||
MYSQL = "mysql",
|
MYSQL = "mysql",
|
||||||
SQL_SERVER = "mssql",
|
SQL_SERVER = "mssql",
|
||||||
|
@ -26,6 +27,7 @@ export enum DatabaseName {
|
||||||
|
|
||||||
const providers: Record<DatabaseName, DatasourceProvider> = {
|
const providers: Record<DatabaseName, DatasourceProvider> = {
|
||||||
[DatabaseName.POSTGRES]: postgres.getDatasource,
|
[DatabaseName.POSTGRES]: postgres.getDatasource,
|
||||||
|
[DatabaseName.POSTGRES_LEGACY]: postgres.getLegacyDatasource,
|
||||||
[DatabaseName.MONGODB]: mongodb.getDatasource,
|
[DatabaseName.MONGODB]: mongodb.getDatasource,
|
||||||
[DatabaseName.MYSQL]: mysql.getDatasource,
|
[DatabaseName.MYSQL]: mysql.getDatasource,
|
||||||
[DatabaseName.SQL_SERVER]: mssql.getDatasource,
|
[DatabaseName.SQL_SERVER]: mssql.getDatasource,
|
||||||
|
@ -145,7 +147,11 @@ export function datasourceDescribe(opts: DatasourceDescribeOpts) {
|
||||||
DatabaseName.ORACLE,
|
DatabaseName.ORACLE,
|
||||||
].includes(dbName),
|
].includes(dbName),
|
||||||
isMySQL: dbName === DatabaseName.MYSQL,
|
isMySQL: dbName === DatabaseName.MYSQL,
|
||||||
isPostgres: dbName === DatabaseName.POSTGRES,
|
isPostgres:
|
||||||
|
dbName === DatabaseName.POSTGRES ||
|
||||||
|
dbName === DatabaseName.POSTGRES_LEGACY,
|
||||||
|
// check if any of the legacy tags
|
||||||
|
isLegacy: dbName === DatabaseName.POSTGRES_LEGACY,
|
||||||
isMongodb: dbName === DatabaseName.MONGODB,
|
isMongodb: dbName === DatabaseName.MONGODB,
|
||||||
isMSSQL: dbName === DatabaseName.SQL_SERVER,
|
isMSSQL: dbName === DatabaseName.SQL_SERVER,
|
||||||
isOracle: dbName === DatabaseName.ORACLE,
|
isOracle: dbName === DatabaseName.ORACLE,
|
||||||
|
|
|
@ -3,14 +3,14 @@ import { GenericContainer, Wait } from "testcontainers"
|
||||||
import { generator, testContainerUtils } from "@budibase/backend-core/tests"
|
import { generator, testContainerUtils } from "@budibase/backend-core/tests"
|
||||||
import { startContainer } from "."
|
import { startContainer } from "."
|
||||||
import knex, { Knex } from "knex"
|
import knex, { Knex } from "knex"
|
||||||
import { POSTGRES_IMAGE } from "./images"
|
import { POSTGRES_IMAGE, POSTGRES_LEGACY_IMAGE } from "./images"
|
||||||
|
|
||||||
let ports: Promise<testContainerUtils.Port[]>
|
let ports: Promise<testContainerUtils.Port[]>
|
||||||
|
|
||||||
export async function getDatasource(): Promise<Datasource> {
|
async function datasourceWithImage(image: string): Promise<Datasource> {
|
||||||
if (!ports) {
|
if (!ports) {
|
||||||
ports = startContainer(
|
ports = startContainer(
|
||||||
new GenericContainer(POSTGRES_IMAGE)
|
new GenericContainer(image)
|
||||||
.withExposedPorts(5432)
|
.withExposedPorts(5432)
|
||||||
.withEnvironment({ POSTGRES_PASSWORD: "password" })
|
.withEnvironment({ POSTGRES_PASSWORD: "password" })
|
||||||
.withWaitStrategy(
|
.withWaitStrategy(
|
||||||
|
@ -51,6 +51,14 @@ export async function getDatasource(): Promise<Datasource> {
|
||||||
return datasource
|
return datasource
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getDatasource(): Promise<Datasource> {
|
||||||
|
return datasourceWithImage(POSTGRES_IMAGE)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getLegacyDatasource(): Promise<Datasource> {
|
||||||
|
return datasourceWithImage(POSTGRES_LEGACY_IMAGE)
|
||||||
|
}
|
||||||
|
|
||||||
export async function knexClient(
|
export async function knexClient(
|
||||||
ds: Datasource,
|
ds: Datasource,
|
||||||
opts?: Knex.Config
|
opts?: Knex.Config
|
||||||
|
|
|
@ -32,7 +32,7 @@ const config = (input, outputFile, format) => ({
|
||||||
}),
|
}),
|
||||||
commonjs(),
|
commonjs(),
|
||||||
json(),
|
json(),
|
||||||
inject({ Buffer: ["buffer", "Buffer"] }),
|
inject({ Buffer: ["buffer", "Buffer"], process: "process/browser" }),
|
||||||
production && terser(),
|
production && terser(),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
|
@ -16187,9 +16187,9 @@ path-scurry@^1.11.1, path-scurry@^1.6.1:
|
||||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||||
|
|
||||||
path-to-regexp@^0.1.10:
|
path-to-regexp@^0.1.10:
|
||||||
version "0.1.11"
|
version "0.1.12"
|
||||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.11.tgz#a527e662c89efc4646dbfa8100bf3e847e495761"
|
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
|
||||||
integrity sha512-c0t+KCuUkO/YDLPG4WWzEwx3J5F/GHXsD1h/SNZfySqAIKe/BaP95x8fWtOfRJokpS5yYHRJjMtYlXD8jxnpbw==
|
integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
|
||||||
|
|
||||||
path-to-regexp@^6.1.0, path-to-regexp@^6.3.0:
|
path-to-regexp@^6.1.0, path-to-regexp@^6.3.0:
|
||||||
version "6.3.0"
|
version "6.3.0"
|
||||||
|
|
Loading…
Reference in New Issue