@budibase/backend-core 2.32.5 → 2.32.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -54228,6 +54228,7 @@ var configs_exports = {};
54228
54228
  __export(configs_exports, {
54229
54229
  analyticsEnabled: () => analyticsEnabled,
54230
54230
  generateConfigID: () => generateConfigID,
54231
+ getAIConfig: () => getAIConfig,
54231
54232
  getConfig: () => getConfig,
54232
54233
  getDefaultGoogleConfig: () => getDefaultGoogleConfig,
54233
54234
  getGoogleConfig: () => getGoogleConfig,
@@ -56302,6 +56303,7 @@ var environment = {
56302
56303
  POSTHOG_TOKEN: process.env.POSTHOG_TOKEN,
56303
56304
  POSTHOG_PERSONAL_TOKEN: process.env.POSTHOG_PERSONAL_TOKEN,
56304
56305
  POSTHOG_API_HOST: process.env.POSTHOG_API_HOST || "https://us.i.posthog.com",
56306
+ POSTHOG_FEATURE_FLAGS_ENABLED: process.env.POSTHOG_FEATURE_FLAGS_ENABLED,
56305
56307
  ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
56306
56308
  TENANT_FEATURE_FLAGS: process.env.TENANT_FEATURE_FLAGS,
56307
56309
  CLOUDFRONT_CDN: process.env.CLOUDFRONT_CDN,
@@ -59815,7 +59817,7 @@ var import_posthog_node = require("posthog-node");
59815
59817
  var import_dd_trace3 = __toESM(require("dd-trace"));
59816
59818
  var posthog;
59817
59819
  function init4(opts) {
59818
- if (environment_default.POSTHOG_TOKEN && environment_default.POSTHOG_API_HOST && !environment_default.SELF_HOSTED) {
59820
+ if (environment_default.POSTHOG_TOKEN && environment_default.POSTHOG_API_HOST && !environment_default.SELF_HOSTED && environment_default.POSTHOG_FEATURE_FLAGS_ENABLED) {
59819
59821
  console.log("initializing posthog client...");
59820
59822
  posthog = new import_posthog_node.PostHog(environment_default.POSTHOG_TOKEN, {
59821
59823
  host: environment_default.POSTHOG_API_HOST,
@@ -66197,6 +66199,9 @@ async function getSCIMConfig() {
66197
66199
  const config = await getConfig("scim" /* SCIM */);
66198
66200
  return config?.config;
66199
66201
  }
66202
+ async function getAIConfig() {
66203
+ return getConfig("ai" /* AI */);
66204
+ }
66200
66205
 
66201
66206
  // src/migrations/index.ts
66202
66207
  var migrations_exports = {};
@@ -67983,9 +67988,17 @@ var SqlTableQueryBuilder = class {
67983
67988
  constructor(client) {
67984
67989
  this.sqlClient = client;
67985
67990
  }
67986
- getSqlClient() {
67991
+ getBaseSqlClient() {
67987
67992
  return this.sqlClient;
67988
67993
  }
67994
+ getSqlClient() {
67995
+ return this.extendedSqlClient || this.sqlClient;
67996
+ }
67997
+ // if working in a database like MySQL with many variants (MariaDB)
67998
+ // we can set another client which overrides the base one
67999
+ setExtendedSqlClient(client) {
68000
+ this.extendedSqlClient = client;
68001
+ }
67989
68002
  /**
67990
68003
  * @param json the input JSON structure from which an SQL query will be built.
67991
68004
  * @return the operation that was found in the JSON.
@@ -68137,6 +68150,7 @@ var InternalBuilder = class {
68137
68150
  return `"${str}"`;
68138
68151
  case "mssql" /* MS_SQL */:
68139
68152
  return `[${str}]`;
68153
+ case "mariadb" /* MARIADB */:
68140
68154
  case "mysql2" /* MY_SQL */:
68141
68155
  return `\`${str}\``;
68142
68156
  }
@@ -68444,7 +68458,7 @@ var InternalBuilder = class {
68444
68458
  )}${wrap}, FALSE)`
68445
68459
  );
68446
68460
  });
68447
- } else if (this.client === "mysql2" /* MY_SQL */) {
68461
+ } else if (this.client === "mysql2" /* MY_SQL */ || this.client === "mariadb" /* MARIADB */) {
68448
68462
  const jsonFnc = any ? "JSON_OVERLAPS" : "JSON_CONTAINS";
68449
68463
  iterate(mode, (q2, key, value) => {
68450
68464
  return q2[rawFnc](
@@ -68747,7 +68761,7 @@ var InternalBuilder = class {
68747
68761
  continue;
68748
68762
  }
68749
68763
  const relatedTable = meta.tables?.[toTable];
68750
- const toAlias = aliases?.[toTable] || toTable, fromAlias = aliases?.[fromTable] || fromTable;
68764
+ const toAlias = aliases?.[toTable] || toTable, fromAlias = aliases?.[fromTable] || fromTable, throughAlias = throughTable && aliases?.[throughTable] || throughTable;
68751
68765
  let toTableWithSchema = this.tableNameWithSchema(toTable, {
68752
68766
  alias: toAlias,
68753
68767
  schema: endpoint.schema
@@ -68766,29 +68780,25 @@ var InternalBuilder = class {
68766
68780
  );
68767
68781
  const fieldList = relationshipFields.map((field) => this.buildJsonField(field)).join(",");
68768
68782
  const primaryKey = `${toAlias}.${toPrimary || toKey}`;
68769
- let subQuery = knex3.from(toTableWithSchema).limit(getRelationshipLimit()).orderBy(primaryKey);
68770
- if (throughTable && toPrimary && fromPrimary) {
68771
- const throughAlias = aliases?.[throughTable] || throughTable;
68783
+ let subQuery = knex3.from(toTableWithSchema).orderBy(primaryKey);
68784
+ const isManyToMany = throughTable && toPrimary && fromPrimary;
68785
+ let correlatedTo = isManyToMany ? `${throughAlias}.${fromKey}` : `${toAlias}.${toKey}`, correlatedFrom = isManyToMany ? `${fromAlias}.${fromPrimary}` : `${fromAlias}.${fromKey}`;
68786
+ if (isManyToMany) {
68772
68787
  let throughTableWithSchema = this.tableNameWithSchema(throughTable, {
68773
68788
  alias: throughAlias,
68774
68789
  schema: endpoint.schema
68775
68790
  });
68776
68791
  subQuery = subQuery.join(throughTableWithSchema, function() {
68777
68792
  this.on(`${toAlias}.${toPrimary}`, "=", `${throughAlias}.${toKey}`);
68778
- }).where(
68779
- `${throughAlias}.${fromKey}`,
68780
- "=",
68781
- knex3.raw(this.quotedIdentifier(`${fromAlias}.${fromPrimary}`))
68782
- );
68783
- } else {
68784
- subQuery = subQuery.where(
68785
- `${toAlias}.${toKey}`,
68786
- "=",
68787
- knex3.raw(this.quotedIdentifier(`${fromAlias}.${fromKey}`))
68788
- );
68793
+ });
68789
68794
  }
68795
+ subQuery = subQuery.where(
68796
+ correlatedTo,
68797
+ "=",
68798
+ knex3.raw(this.quotedIdentifier(correlatedFrom))
68799
+ );
68790
68800
  const standardWrap = (select) => {
68791
- subQuery = subQuery.select(`${toAlias}.*`);
68801
+ subQuery = subQuery.select(`${toAlias}.*`).limit(getRelationshipLimit());
68792
68802
  return knex3.select(knex3.raw(select)).from({
68793
68803
  [toAlias]: subQuery
68794
68804
  });
@@ -68806,11 +68816,14 @@ var InternalBuilder = class {
68806
68816
  `json_agg(json_build_object(${fieldList}))`
68807
68817
  );
68808
68818
  break;
68809
- case "mysql2" /* MY_SQL */:
68819
+ case "mariadb" /* MARIADB */:
68810
68820
  wrapperQuery = subQuery.select(
68811
- knex3.raw(`json_arrayagg(json_object(${fieldList}))`)
68821
+ knex3.raw(
68822
+ `json_arrayagg(json_object(${fieldList}) LIMIT ${getRelationshipLimit()})`
68823
+ )
68812
68824
  );
68813
68825
  break;
68826
+ case "mysql2" /* MY_SQL */:
68814
68827
  case "oracledb" /* ORACLE */:
68815
68828
  wrapperQuery = standardWrap(
68816
68829
  `json_arrayagg(json_object(${fieldList}))`
@@ -68819,7 +68832,7 @@ var InternalBuilder = class {
68819
68832
  case "mssql" /* MS_SQL */:
68820
68833
  wrapperQuery = knex3.raw(
68821
68834
  `(SELECT ${this.quote(toAlias)} = (${knex3.select(`${fromAlias}.*`).from({
68822
- [fromAlias]: subQuery.select(`${toAlias}.*`)
68835
+ [fromAlias]: subQuery.select(`${toAlias}.*`).limit(getRelationshipLimit())
68823
68836
  })} FOR JSON PATH))`
68824
68837
  );
68825
68838
  break;
@@ -68930,7 +68943,7 @@ var InternalBuilder = class {
68930
68943
  return query;
68931
68944
  }
68932
68945
  const parsedBody = body2.map((row) => this.parseBody(row));
68933
- if (this.client === "pg" /* POSTGRES */ || this.client === "sqlite3" /* SQL_LITE */ || this.client === "mysql2" /* MY_SQL */) {
68946
+ if (this.client === "pg" /* POSTGRES */ || this.client === "sqlite3" /* SQL_LITE */ || this.client === "mysql2" /* MY_SQL */ || this.client === "mariadb" /* MARIADB */) {
68934
68947
  const primary = this.table.primary;
68935
68948
  if (!primary) {
68936
68949
  throw new Error("Primary key is required for upsert");
@@ -69034,7 +69047,7 @@ var SqlQueryBuilder = class extends sqlTable_default {
69034
69047
  _query(json, opts = {}) {
69035
69048
  const sqlClient = this.getSqlClient();
69036
69049
  const config = {
69037
- client: sqlClient
69050
+ client: this.getBaseSqlClient()
69038
69051
  };
69039
69052
  if (sqlClient === "sqlite3" /* SQL_LITE */ || sqlClient === "oracledb" /* ORACLE */) {
69040
69053
  config.useNullAsDefault = true;
@@ -69136,7 +69149,7 @@ var SqlQueryBuilder = class extends sqlTable_default {
69136
69149
  let id;
69137
69150
  if (sqlClient === "mssql" /* MS_SQL */) {
69138
69151
  id = results?.[0].id;
69139
- } else if (sqlClient === "mysql2" /* MY_SQL */) {
69152
+ } else if (sqlClient === "mysql2" /* MY_SQL */ || sqlClient === "mariadb" /* MARIADB */) {
69140
69153
  id = results?.insertId;
69141
69154
  }
69142
69155
  row = processFn(