diff --git a/.github/workflows/deploy-featurebranch.yml b/.github/workflows/deploy-featurebranch.yml
index f06707ab2b..ddf185a1d9 100644
--- a/.github/workflows/deploy-featurebranch.yml
+++ b/.github/workflows/deploy-featurebranch.yml
@@ -13,7 +13,7 @@ jobs:
- uses: passeidireto/trigger-external-workflow-action@main
env:
PAYLOAD_BRANCH: ${{ github.head_ref }}
- PAYLOAD_PR_NUMBER: ${{ github.ref }}
+ PAYLOAD_PR_NUMBER: ${{ github.event.pull_request.number }}
with:
repository: budibase/budibase-deploys
event: featurebranch-qa-deploy
diff --git a/lerna.json b/lerna.json
index 84d7bc0ec1..14d073465f 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "2.10.16-alpha.19",
+ "version": "2.11.5-alpha.1",
"npmClient": "yarn",
"packages": [
"packages/*"
diff --git a/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte b/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte
index 8c50689f22..c3097f3072 100644
--- a/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte
+++ b/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte
@@ -3,6 +3,8 @@
import { Select, Checkbox } from "@budibase/bbui"
import { createEventDispatcher } from "svelte"
import RowSelectorTypes from "./RowSelectorTypes.svelte"
+ import DrawerBindableSlot from "../../common/bindings/DrawerBindableSlot.svelte"
+ import AutomationBindingPanel from "../../common/bindings/ServerBindingPanel.svelte"
const dispatch = createEventDispatcher()
@@ -108,14 +110,29 @@
{#each schemaFields as [field, schema]}
{#if !schema.autocolumn && schema.type !== "attachment"}
-
+ value={value[field]}
+ on:change={e => onChange(e, field)}
+ {bindings}
+ allowJS={true}
+ updateOnChange={false}
+ drawerLeft="260px"
+ >
+
+
{/if}
{#if isUpdateRow && schema.type === "link"}
diff --git a/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte b/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte
index 9111df0adc..8cf1ecf6de 100644
--- a/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte
+++ b/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte
@@ -8,7 +8,6 @@
} from "@budibase/bbui"
import LinkedRowSelector from "components/common/LinkedRowSelector.svelte"
import DrawerBindableInput from "../../common/bindings/DrawerBindableInput.svelte"
- import DrawerBindableSlot from "../../common/bindings/DrawerBindableSlot.svelte"
import ModalBindableInput from "../../common/bindings/ModalBindableInput.svelte"
import AutomationBindingPanel from "../../common/bindings/ServerBindingPanel.svelte"
import Editor from "components/integration/QueryEditor.svelte"
@@ -31,88 +30,73 @@
}
- onChange(e, field)}
- {bindings}
- allowJS={true}
- updateOnChange={false}
- drawerLeft="260px"
->
- {#if schemaHasOptions(schema) && schema.type !== "array"}
-
+
+{:else if schema.type === "link"}
+ onChange(e, field)}
+ />
+{:else if schema.type === "string" || schema.type === "number"}
+ onChange(e, field)}
+ label={field}
+ type="string"
+ bindings={parsedBindings}
+ fillWidth={true}
+ allowJS={true}
+ updateOnChange={false}
+ />
+{/if}
diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
index 1c64dfe5ec..c67ce67d57 100644
--- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
+++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
@@ -277,10 +277,7 @@
dispatch("updatecolumns")
gridDispatch("close-edit-column")
- if (
- saveColumn.type === LINK_TYPE &&
- saveColumn.relationshipType === RelationshipType.MANY_TO_MANY
- ) {
+ if (saveColumn.type === LINK_TYPE) {
// Fetching the new tables
tables.fetch()
// Fetching the new relationships
@@ -312,6 +309,11 @@
confirmDeleteDialog.hide()
dispatch("updatecolumns")
gridDispatch("close-edit-column")
+
+ if (editableColumn.type === LINK_TYPE) {
+ // Updating the relationships
+ datasources.fetch()
+ }
}
} catch (error) {
notifications.error(`Error deleting column: ${error.message}`)
diff --git a/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte b/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte
index 9c98bdc2e5..9e42dfecd9 100644
--- a/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte
+++ b/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte
@@ -57,7 +57,8 @@
label: table.name,
value: table._id,
}))
- $: valid = getErrorCount(errors) === 0 && allRequiredAttributesSet()
+ $: valid =
+ getErrorCount(errors) === 0 && allRequiredAttributesSet(relationshipType)
$: isManyToMany = relationshipType === RelationshipType.MANY_TO_MANY
$: isManyToOne = relationshipType === RelationshipType.MANY_TO_ONE
@@ -114,7 +115,7 @@
return Object.entries(errors).filter(entry => !!entry[1]).length
}
- function allRequiredAttributesSet() {
+ function allRequiredAttributesSet(relationshipType) {
const base = getTable(fromId) && getTable(toId) && fromColumn && toColumn
if (relationshipType === RelationshipType.MANY_TO_ONE) {
return base && fromPrimary && fromForeign
@@ -124,9 +125,10 @@
}
function validate() {
- if (!allRequiredAttributesSet() && !hasValidated) {
+ if (!allRequiredAttributesSet(relationshipType) && !hasValidated) {
return
}
+
hasValidated = true
errorChecker.setType(relationshipType)
const fromTable = getTable(fromId),
diff --git a/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/_components/panels/Relationships.svelte b/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/_components/panels/Relationships.svelte
index 384b87e11d..1a46ecb540 100644
--- a/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/_components/panels/Relationships.svelte
+++ b/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/_components/panels/Relationships.svelte
@@ -21,15 +21,22 @@
function getRelationships(tables) {
const relatedColumns = {}
- tables.forEach(({ name: tableName, schema }) => {
+ tables.forEach(({ name: tableName, schema, _id: tableId }) => {
Object.values(schema).forEach(column => {
if (column.type !== "link") return
- relatedColumns[column._id] ??= {}
- relatedColumns[column._id].through =
- relatedColumns[column._id].through || column.through
+ const columnId =
+ column.through ||
+ column._id ||
+ (column.main
+ ? `${tableId}_${column.fieldName}__${column.tableId}_${column.foreignKey}`
+ : `${column.tableId}_${column.foreignKey}__${tableId}_${column.fieldName}`)
- relatedColumns[column._id][column.main ? "from" : "to"] = {
+ relatedColumns[columnId] ??= {}
+ relatedColumns[columnId].through =
+ relatedColumns[columnId].through || column.through
+
+ relatedColumns[columnId][column.main ? "from" : "to"] = {
...column,
tableName,
}
diff --git a/packages/frontend-core/src/components/grid/cells/BBReferenceCell.svelte b/packages/frontend-core/src/components/grid/cells/BBReferenceCell.svelte
index be99c9f633..b4168474b0 100644
--- a/packages/frontend-core/src/components/grid/cells/BBReferenceCell.svelte
+++ b/packages/frontend-core/src/components/grid/cells/BBReferenceCell.svelte
@@ -3,6 +3,8 @@
import RelationshipCell from "./RelationshipCell.svelte"
import { FieldSubtype } from "@budibase/types"
+ export let api
+
const { API } = getContext("grid")
const { subtype } = $$props.schema
@@ -17,8 +19,11 @@
throw `Search for '${subtype}' not implemented`
}
+ // As we are overriding the search function from RelationshipCell, we want to map one shape to the expected one for the specific API
+ const email = Object.values(searchParams.query.string)[0]
+
const results = await API.searchUsers({
- ...searchParams,
+ email,
})
// Mapping to the expected data within RelationshipCell
@@ -31,6 +36,7 @@