diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte index d2d4bb56d..117c87909 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte @@ -8,10 +8,15 @@ InputText, InputEmail, InputNumber, + InputSelect, Button } from '$lib/elements/forms'; - import { collection } from './store'; + import { attributeList, type Attributes } from './store'; import { sdkForProject } from '$lib/stores/sdk'; + import { page } from '$app/stores'; + import { onMount } from 'svelte'; + + $: attributeList.load($page.params.collection); export let showCreate = false; @@ -19,37 +24,80 @@ { title: 'Create data', current: true, completed: false }, { title: 'Set permissions', current: false, completed: false } ]; - let currentStep = 0; - - const comp = (type: string) => { - switch (type) { - case 'boolean': - return InputCheckbox; - case 'email': - return InputEmail; - case 'float': - return InputNumber; - case 'integer': - return InputNumber; - - default: - return InputText; - } - }; - let newDocument = {}; let read: string[]; let write: string[]; + onMount(async () => { + console.log($attributeList); + await attributeList.load($page.params.collection); + $attributeList.attributes.forEach((attr) => { + newDocument[attr.key] = attr.default; + }); + }); + const create = async () => { - await sdkForProject.databases.createDocument( - $collection.$id, - 'unique()', - newDocument, - read, - write - ); + console.log(newDocument); + // await sdkForProject.databases.createDocument( + // $page.params.collection, + // 'unique()', + // newDocument, + // read, + // write + // ); + }; + + const comp = (attr: Attributes) => { + if (attr.array) { + if (attr.type === 'string') + switch (attr?.format) { + case 'email': + return InputEmail; + case 'enum': + return InputSelect; + + default: + return InputText; + } + else { + switch (attr?.type) { + case 'boolean': + return InputSelect; + case 'double': + return InputNumber; + case 'integer': + return InputNumber; + + default: + return InputText; + } + } + } else { + if (attr.type === 'string') + switch (attr?.format) { + case 'email': + return InputEmail; + case 'enum': + return InputSelect; + + default: + return InputText; + } + else { + switch (attr?.type) { + case 'boolean': + return InputCheckbox; + case 'double': + return InputNumber; + case 'integer': + return InputNumber; + + default: + return InputText; + } + } + } }; const nextStep = () => { @@ -60,7 +108,6 @@ }; const prevStep = () => { steps[currentStep].current = false; - currentStep--; steps[currentStep].current = true; steps[currentStep].completed = false; @@ -82,36 +129,54 @@
Provide document data based on attributes you created earlier.
-