diff --git a/src/lib/helpers/domains.ts b/src/lib/helpers/domains.ts index b10a08a82..4000d7b1b 100644 --- a/src/lib/helpers/domains.ts +++ b/src/lib/helpers/domains.ts @@ -1,4 +1,94 @@ import type { DnsRecord } from '$lib/sdk/domains'; +import { sdk } from '$lib/stores/sdk'; + +export async function createRecord(record: Partial, domainId: string) { + switch (record.type) { + case 'A': + return await sdk.forConsole.domains.createRecordA( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + case 'AAAA': + return await sdk.forConsole.domains.createRecordAAAA( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + case 'CNAME': + return await sdk.forConsole.domains.createRecordCNAME( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + case 'MX': + return await sdk.forConsole.domains.createRecordMX( + domainId, + record.name, + record.value, + record.priority || 10, + record.ttl, + record?.comment || undefined + ); + case 'TXT': + return await sdk.forConsole.domains.createRecordTXT( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + case 'NS': + return await sdk.forConsole.domains.createRecordNS( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + case 'SRV': + return await sdk.forConsole.domains.createRecordSRV( + domainId, + record.name, + record.value, + record.ttl, + record.priority, + record.weight, + record.port, + record?.comment || undefined + ); + case 'CAA': + return await sdk.forConsole.domains.createRecordCAA( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + case 'HTTPS': + return await sdk.forConsole.domains.createRecordHTTPS( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + case 'ALIAS': + return await sdk.forConsole.domains.createRecordAlias( + domainId, + record.name, + record.value, + record.ttl, + record?.comment || undefined + ); + } +} export type ParsedRecords = { A: Partial[]; diff --git a/src/lib/stores/domains.ts b/src/lib/stores/domains.ts index 82f716700..ea339f83d 100644 --- a/src/lib/stores/domains.ts +++ b/src/lib/stores/domains.ts @@ -20,3 +20,15 @@ export const statusCodeOptions = [ value: 308 } ]; + +export type RecordType = + | 'A' + | 'AAAA' + | 'CNAME' + | 'MX' + | 'TXT' + | 'NS' + | 'SRV' + | 'CAA' + | 'HTTPS' + | 'ALIAS'; diff --git a/src/routes/(console)/organization-[organization]/domains/domain-[domain]/addPresetModal.svelte b/src/routes/(console)/organization-[organization]/domains/domain-[domain]/addPresetModal.svelte index e5db0d394..5305ee2b7 100644 --- a/src/routes/(console)/organization-[organization]/domains/domain-[domain]/addPresetModal.svelte +++ b/src/routes/(console)/organization-[organization]/domains/domain-[domain]/addPresetModal.svelte @@ -11,6 +11,7 @@ import { presets } from './store'; import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; + import { createRecord } from '$lib/helpers/domains'; export let show = false; export let selectedPreset: (typeof presets)[number]; @@ -35,16 +36,9 @@ async function handleSubmit() { try { - //TODO: create DNS records if (records.total) { - const promises = records.dnsRecords.map((record) => - sdk.forConsole.domains.createRecordMX( - page.params.domain, - record.name, - record.value, - record.ttl, - record.priority - ) + const promises = records.dnsRecords.map( + async (record) => await createRecord(record, page.params.domain) ); await Promise.all(promises); } @@ -62,8 +56,6 @@ trackError(e, Submit.RecordCreate); } } - - $: console.log(selectedPreset);