@budibase/backend-core 2.32.4 → 2.32.6

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
@@ -56302,6 +56302,7 @@ var environment = {
56302
56302
  POSTHOG_TOKEN: process.env.POSTHOG_TOKEN,
56303
56303
  POSTHOG_PERSONAL_TOKEN: process.env.POSTHOG_PERSONAL_TOKEN,
56304
56304
  POSTHOG_API_HOST: process.env.POSTHOG_API_HOST || "https://us.i.posthog.com",
56305
+ POSTHOG_FEATURE_FLAGS_ENABLED: process.env.POSTHOG_FEATURE_FLAGS_ENABLED,
56305
56306
  ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
56306
56307
  TENANT_FEATURE_FLAGS: process.env.TENANT_FEATURE_FLAGS,
56307
56308
  CLOUDFRONT_CDN: process.env.CLOUDFRONT_CDN,
@@ -59815,7 +59816,7 @@ var import_posthog_node = require("posthog-node");
59815
59816
  var import_dd_trace3 = __toESM(require("dd-trace"));
59816
59817
  var posthog;
59817
59818
  function init4(opts) {
59818
- if (environment_default.POSTHOG_TOKEN && environment_default.POSTHOG_API_HOST && !environment_default.SELF_HOSTED) {
59819
+ if (environment_default.POSTHOG_TOKEN && environment_default.POSTHOG_API_HOST && !environment_default.SELF_HOSTED && environment_default.POSTHOG_FEATURE_FLAGS_ENABLED) {
59819
59820
  console.log("initializing posthog client...");
59820
59821
  posthog = new import_posthog_node.PostHog(environment_default.POSTHOG_TOKEN, {
59821
59822
  host: environment_default.POSTHOG_API_HOST,
@@ -68058,7 +68059,6 @@ var sqlTable_default = SqlTableQueryBuilder;
68058
68059
 
68059
68060
  // src/sql/sql.ts
68060
68061
  var import_lodash3 = require("lodash");
68061
- var MAX_SQS_RELATIONSHIP_FIELDS = 63;
68062
68062
  function getBaseLimit() {
68063
68063
  const envLimit = environment_default.SQL_MAX_ROWS ? parseInt(environment_default.SQL_MAX_ROWS) : null;
68064
68064
  return envLimit || 5e3;
@@ -68067,6 +68067,19 @@ function getRelationshipLimit() {
68067
68067
  const envLimit = environment_default.SQL_MAX_RELATED_ROWS ? parseInt(environment_default.SQL_MAX_RELATED_ROWS) : null;
68068
68068
  return envLimit || 500;
68069
68069
  }
68070
+ function prioritisedArraySort(toSort, priorities) {
68071
+ return toSort.sort((a, b) => {
68072
+ const aPriority = priorities.find((field) => field && a.endsWith(field));
68073
+ const bPriority = priorities.find((field) => field && b.endsWith(field));
68074
+ if (aPriority && !bPriority) {
68075
+ return -1;
68076
+ }
68077
+ if (!aPriority && bPriority) {
68078
+ return 1;
68079
+ }
68080
+ return a.localeCompare(b);
68081
+ });
68082
+ }
68070
68083
  function getTableName(table) {
68071
68084
  if (table?.sourceType === "internal" /* INTERNAL */ || table?.sourceId === INTERNAL_TABLE_SOURCE_ID) {
68072
68085
  return table?._id;
@@ -68707,10 +68720,20 @@ var InternalBuilder = class {
68707
68720
  const separator = this.client === "oracledb" /* ORACLE */ ? " VALUE " : ",";
68708
68721
  return `'${unaliased}'${separator}${tableField}`;
68709
68722
  }
68723
+ maxFunctionParameters() {
68724
+ switch (this.client) {
68725
+ case "sqlite3" /* SQL_LITE */:
68726
+ return 127;
68727
+ case "pg" /* POSTGRES */:
68728
+ return 100;
68729
+ default:
68730
+ return 200;
68731
+ }
68732
+ }
68710
68733
  addJsonRelationships(query, fromTable, relationships) {
68711
68734
  const sqlClient = this.client;
68712
68735
  const knex3 = this.knex;
68713
- const { resource, tableAliases: aliases, endpoint } = this.query;
68736
+ const { resource, tableAliases: aliases, endpoint, meta } = this.query;
68714
68737
  const fields = resource?.fields || [];
68715
68738
  for (let relationship of relationships) {
68716
68739
  const {
@@ -68724,20 +68747,24 @@ var InternalBuilder = class {
68724
68747
  if (!toTable || !fromTable) {
68725
68748
  continue;
68726
68749
  }
68750
+ const relatedTable = meta.tables?.[toTable];
68727
68751
  const toAlias = aliases?.[toTable] || toTable, fromAlias = aliases?.[fromTable] || fromTable;
68728
68752
  let toTableWithSchema = this.tableNameWithSchema(toTable, {
68729
68753
  alias: toAlias,
68730
68754
  schema: endpoint.schema
68731
68755
  });
68732
- let relationshipFields = fields.filter(
68733
- (field) => field.split(".")[0] === toAlias
68756
+ const requiredFields = [
68757
+ ...relatedTable?.primary || [],
68758
+ relatedTable?.primaryDisplay
68759
+ ].filter((field) => field);
68760
+ let relationshipFields = prioritisedArraySort(
68761
+ fields.filter((field) => field.split(".")[0] === toAlias),
68762
+ requiredFields
68763
+ );
68764
+ relationshipFields = relationshipFields.slice(
68765
+ 0,
68766
+ Math.floor(this.maxFunctionParameters() / 2)
68734
68767
  );
68735
- if (this.client === "sqlite3" /* SQL_LITE */) {
68736
- relationshipFields = relationshipFields.slice(
68737
- 0,
68738
- MAX_SQS_RELATIONSHIP_FIELDS
68739
- );
68740
- }
68741
68768
  const fieldList = relationshipFields.map((field) => this.buildJsonField(field)).join(",");
68742
68769
  const primaryKey = `${toAlias}.${toPrimary || toKey}`;
68743
68770
  let subQuery = knex3.from(toTableWithSchema).limit(getRelationshipLimit()).orderBy(primaryKey);