diff --git a/components/data-stores/create/DataStoreProjectInitializer.vue b/components/data-stores/create/DataStoreProjectInitializer.vue index c35769f5..69b08858 100644 --- a/components/data-stores/create/DataStoreProjectInitializer.vue +++ b/components/data-stores/create/DataStoreProjectInitializer.vue @@ -10,18 +10,15 @@ import InputGroup from "primevue/inputgroup"; import DataStoreHelpBox from "~/components/data-stores/create/DataStoreHelpBox.vue"; import { HelpTextField } from "~/components/data-stores/create/index"; import { useToast } from "primevue/usetoast"; +import { + type BodyKongInitializeKongInitializePost, + DataStoreType, +} from "~/services/Api"; const props = defineProps({ projects: Array, }); -export interface kongBody { - datastore: object; - project_id: string; - methods: string[]; - ds_type: string; -} - const loading = ref(false); const helpActive = ref(); @@ -33,10 +30,13 @@ const connMsgColor = computed(() => const toast = useToast(); // Project settings -// const availableMethods = ["GET", "POST", "PUT", "DELETE"]; -const dataStoreTypes = ["FHIR", "S3"]; -type allowedDataStoreTypes = (typeof dataStoreTypes)[number]; -const selectedDataStoreType = ref("FHIR"); +const dataStoreTypeOptions = computed(() => + Object.values(DataStoreType).map((type) => ({ + label: type.toUpperCase(), + value: type, + })), +); +const selectedDataStoreType = ref(DataStoreType.Fhir); // S3 settings type allowedBucketAccessPolicies = "Public" | "Private"; @@ -47,8 +47,6 @@ const bucketSecretKey = ref(""); const selectedProject = ref(); -// const selectedAllowedMethods = ref(["GET"]); - const dataStoreSettingsMap: Map = new Map([ ["name", "Project"], ["host", "Server hostname"], @@ -123,6 +121,12 @@ async function onSubmitCreateDataStoreAndProject() { protocol: protocol.value, }; + const configSettings: BodyKongInitializeKongInitializePost = { + datastore: datastoreSettings, + project_id: selectedProject.value.id, + ds_type: selectedDataStoreType.value, + }; + const minioSettings = { minio_access_key: bucketAccessKey.value || "", minio_secret_key: bucketSecretKey.value || "", @@ -132,26 +136,16 @@ async function onSubmitCreateDataStoreAndProject() { // Check settings are filled in let settingsValidated: boolean; settingsValidated = verifyValuesFilled(datastoreSettings); + if ( - selectedDataStoreType.value == "S3" && + selectedDataStoreType.value == DataStoreType.S3 && selectedBucketAccessPolicy.value == "Private" ) { + configSettings.minio_config = minioSettings; settingsValidated = settingsValidated && verifyValuesFilled(minioSettings); } if (settingsValidated) { - const configSettings: kongBody = { - datastore: datastoreSettings, - project_id: selectedProject.value.id, - // methods: selectedAllowedMethods.value, - methods: ["GET"], // Hardcode to GET only to prevent abuse/security issues - ds_type: selectedDataStoreType.value.toLowerCase() as string, - }; - - if (selectedBucketAccessPolicy.value == "Private") { - configSettings["minio_config"] = minioSettings; - } - loading.value = true; const creationResp = await useNuxtApp() .$hubApi("/kong/initialize", { @@ -260,11 +254,16 @@ async function onSubmitCreateDataStoreAndProject() {