Merge pull request #1156 from Budibase/external-data-source-fixes
External data source fixes
This commit is contained in:
commit
175d34841b
|
@ -3,13 +3,14 @@
|
|||
import KeyValueBuilder from "components/integration/KeyValueBuilder.svelte"
|
||||
|
||||
export let integration
|
||||
export let schema
|
||||
|
||||
let unsaved = false
|
||||
</script>
|
||||
|
||||
<form>
|
||||
{#each Object.keys(integration) as configKey}
|
||||
{#if typeof integration[configKey] === 'object'}
|
||||
{#each Object.keys(schema) as configKey}
|
||||
{#if typeof schema[configKey].type === 'object'}
|
||||
<Label small>{configKey}</Label>
|
||||
<Spacer small />
|
||||
<KeyValueBuilder bind:object={integration[configKey]} on:change />
|
||||
|
@ -18,7 +19,7 @@
|
|||
<Label small>{configKey}</Label>
|
||||
<Input
|
||||
outline
|
||||
type={integration[configKey].type}
|
||||
type={schema[configKey].type}
|
||||
on:change
|
||||
bind:value={integration[configKey]} />
|
||||
</div>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
})
|
||||
</script>
|
||||
|
||||
<ModalContent title="Webhook Endpoints" confirmText="Done">
|
||||
<ModalContent title="Webhook Endpoints" confirmText="OK" showCancelButton={false}>
|
||||
<p>See below the list of deployed webhook URLs.</p>
|
||||
{#each webhookUrls as webhookUrl}
|
||||
<div>
|
||||
|
|
|
@ -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",
|
||||
}))
|
||||
|
|
|
@ -74,6 +74,7 @@
|
|||
|
||||
<Spacer extraLarge />
|
||||
<IntegrationConfigForm
|
||||
schema={integration.datasource}
|
||||
integration={datasource.config}
|
||||
on:change={setUnsaved} />
|
||||
<Spacer extraLarge />
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -8,7 +8,7 @@ const SCHEMA = {
|
|||
friendlyName: "Airtable",
|
||||
datasource: {
|
||||
apiKey: {
|
||||
type: FIELD_TYPES.STRING,
|
||||
type: FIELD_TYPES.PASSWORD,
|
||||
default: "enter api key",
|
||||
required: true,
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue