1
0
Fork 0
mirror of synced 2024-06-26 18:10:51 +12:00
budibase/packages/builder/src/components/backend/DatasourceNavigator/modals/DatasourceConfigModal.svelte

71 lines
1.9 KiB
Svelte
Raw Normal View History

2021-09-24 08:47:22 +12:00
<script>
2021-09-24 21:19:48 +12:00
import { goto } from "@roxi/routify"
2021-09-24 22:28:56 +12:00
import { ModalContent, notifications, Body, Layout } from "@budibase/bbui"
2021-09-24 08:47:22 +12:00
import IntegrationConfigForm from "components/backend/DatasourceNavigator/TableIntegrationMenu/IntegrationConfigForm.svelte"
2021-12-07 06:39:51 +13:00
import { IntegrationNames } from "constants/backend"
import cloneDeep from "lodash/cloneDeepWith"
import { saveDatasource as save } from "builderStore/datasource"
import { onMount } from "svelte"
2021-09-24 08:47:22 +12:00
export let integration
export let modal
// kill the reference so the input isn't saved
let datasource = cloneDeep(integration)
let skipFetch = false
let isValid = false
2021-09-24 21:19:48 +12:00
$: name =
IntegrationNames[datasource.type] || datasource.name || datasource.type
2021-09-24 08:47:22 +12:00
async function saveDatasource() {
try {
if (!datasource.name) {
datasource.name = name
}
const resp = await save(datasource, skipFetch)
2021-09-27 22:04:01 +13:00
$goto(`./datasource/${resp._id}`)
2021-09-24 08:47:22 +12:00
notifications.success(`Datasource updated successfully.`)
} catch (err) {
2022-03-08 23:15:02 +13:00
notifications.error(err?.message ?? "Error saving datasource")
// prevent the modal from closing
return false
2021-09-24 21:01:53 +12:00
}
}
onMount(() => {
skipFetch = false
})
2021-09-24 08:47:22 +12:00
</script>
<ModalContent
title={`Connect to ${name}`}
2021-09-24 08:47:22 +12:00
onConfirm={() => saveDatasource()}
onCancel={() => modal.show()}
confirmText={datasource.plus
? "Save and fetch tables"
2021-09-24 21:01:53 +12:00
: "Save and continue to query"}
cancelText="Back"
showSecondaryButton={datasource.plus}
secondaryButtonText={datasource.plus ? "Skip table fetch" : undefined}
secondaryAction={() => {
skipFetch = true
saveDatasource()
return true
}}
size="L"
disabled={!isValid}
2021-09-24 08:47:22 +12:00
>
2021-09-24 22:28:56 +12:00
<Layout noPadding>
<Body size="XS"
>Connect your database to Budibase using the config below.
</Body>
</Layout>
<IntegrationConfigForm
schema={datasource.schema}
bind:datasource
creating={true}
on:valid={e => (isValid = e.detail)}
/>
2021-09-24 08:47:22 +12:00
</ModalContent>