See below the list of deployed webhook URLs.
{#each webhookUrls as webhookUrl}
diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte
index fe8f7a7687..8ab7167636 100644
--- a/packages/builder/src/components/integration/QueryViewer.svelte
+++ b/packages/builder/src/components/integration/QueryViewer.svelte
@@ -90,7 +90,7 @@
if (response.status !== 200) throw new Error(json.message)
- data = json || []
+ data = json.rows || []
if (data.length === 0) {
notifier.info(
@@ -101,9 +101,9 @@
notifier.success("Query executed successfully.")
- // Assume all the fields are strings and create a basic schema
- // from the first record returned by the query
- fields = Object.keys(json[0]).map(field => ({
+ // Assume all the fields are strings and create a basic schema from the
+ // unique fields returned by the server
+ fields = json.schemaFields.map(field => ({
name: field,
type: "STRING",
}))
diff --git a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte
index 6415f3f9de..657ca256b4 100644
--- a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte
+++ b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte
@@ -74,6 +74,7 @@
diff --git a/packages/server/src/api/controllers/query.js b/packages/server/src/api/controllers/query.js
index 04ff019a38..55c2ad14b0 100644
--- a/packages/server/src/api/controllers/query.js
+++ b/packages/server/src/api/controllers/query.js
@@ -115,9 +115,17 @@ exports.preview = async function(ctx) {
const enrichedQuery = await enrichQueryFields(fields, parameters)
- ctx.body = formatResponse(
+ const rows = formatResponse(
await new Integration(datasource.config)[queryVerb](enrichedQuery)
)
+
+ // get all the potential fields in the schema
+ const keys = rows.flatMap(Object.keys)
+
+ ctx.body = {
+ rows,
+ schemaFields: [...new Set(keys)],
+ }
}
exports.execute = async function(ctx) {
diff --git a/packages/server/src/integrations/airtable.js b/packages/server/src/integrations/airtable.js
index 004deff16e..2c83712289 100644
--- a/packages/server/src/integrations/airtable.js
+++ b/packages/server/src/integrations/airtable.js
@@ -8,7 +8,7 @@ const SCHEMA = {
friendlyName: "Airtable",
datasource: {
apiKey: {
- type: FIELD_TYPES.STRING,
+ type: FIELD_TYPES.PASSWORD,
default: "enter api key",
required: true,
},