fix: domain creation logic

This commit is contained in:
Arman
2025-04-07 17:48:41 +02:00
parent 41160a11f0
commit 5df712b14d
6 changed files with 125 additions and 223 deletions
+90
View File
@@ -1,4 +1,94 @@
import type { DnsRecord } from '$lib/sdk/domains';
import { sdk } from '$lib/stores/sdk';
export async function createRecord(record: Partial<DnsRecord>, 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<DnsRecord>[];
+12
View File
@@ -20,3 +20,15 @@ export const statusCodeOptions = [
value: 308
}
];
export type RecordType =
| 'A'
| 'AAAA'
| 'CNAME'
| 'MX'
| 'TXT'
| 'NS'
| 'SRV'
| 'CAA'
| 'HTTPS'
| 'ALIAS';
@@ -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);
</script>
<Modal
@@ -16,19 +16,8 @@
import { recordTypes } from './store';
import { Dependencies } from '$lib/constants';
import { invalidate } from '$app/navigation';
type RecordType =
| 'A'
| 'AAAA'
| 'CNAME'
| 'MX'
| 'TXT'
| 'NS'
| 'SRV'
| 'CAA'
| 'PTR'
| 'HTTPS'
| 'ALIAS';
import type { RecordType } from '$lib/stores/domains';
import { createRecord } from '$lib/helpers/domains';
export let show = false;
@@ -41,105 +30,23 @@
let error = '';
async function handleSubmit() {
const record = {
name,
type,
value,
ttl,
priority,
comment
};
try {
switch (type) {
case 'A':
await sdk.forConsole.domains.createRecordA(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
case 'AAAA':
await sdk.forConsole.domains.createRecordAAAA(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
case 'CNAME':
await sdk.forConsole.domains.createRecordCNAME(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
case 'MX':
await sdk.forConsole.domains.createRecordMX(
page.params.domain,
name,
value,
ttl,
priority,
comment || undefined
);
break;
case 'TXT':
await sdk.forConsole.domains.createRecordTXT(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
case 'NS':
await sdk.forConsole.domains.createRecordNS(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
case 'CAA':
await sdk.forConsole.domains.createRecordCAA(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
case 'HTTPS':
await sdk.forConsole.domains.createRecordHTTPS(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
case 'ALIAS':
await sdk.forConsole.domains.createRecordAlias(
page.params.domain,
name,
value,
ttl,
comment || undefined
);
break;
default:
break;
}
await createRecord(record, page.params.domain);
name = '';
type = 'A';
value = '';
ttl = 3600;
priority = undefined;
comment = '';
error = '';
show = false;
invalidate(Dependencies.DOMAINS);
addNotification({
@@ -6,9 +6,8 @@
import { Icon, Layout, Tooltip, Typography, Upload } from '@appwrite.io/pink-svelte';
import { IconInfo } from '@appwrite.io/pink-icons-svelte';
import { removeFile } from '$lib/helpers/files';
import { sdk } from '$lib/stores/sdk';
import { page } from '$app/state';
import { parseDnsRecords } from '$lib/helpers/domains';
import { createRecord, parseDnsRecords } from '$lib/helpers/domains';
export let show = false;
let files: FileList;
@@ -28,102 +27,7 @@
recordCount += records.length;
for (const record of records) {
switch (type) {
case 'A':
await sdk.forConsole.domains.createRecordA(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
case 'AAAA':
await sdk.forConsole.domains.createRecordAAAA(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
case 'CNAME':
await sdk.forConsole.domains.createRecordCNAME(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
case 'MX':
await sdk.forConsole.domains.createRecordMX(
page.params.domain,
record.name,
record.value,
record.priority || 10,
record.ttl,
record.comment
);
break;
case 'TXT':
await sdk.forConsole.domains.createRecordTXT(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
case 'NS':
await sdk.forConsole.domains.createRecordNS(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
case 'SRV':
await sdk.forConsole.domains.createRecordSRV(
page.params.domain,
record.name,
record.value,
record.ttl,
record.priority,
record.weight,
record.port,
record.comment
);
break;
case 'CAA':
await sdk.forConsole.domains.createRecordCAA(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
case 'PTR':
await sdk.forConsole.domains.createRecordHTTPS(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
case 'ALIAS':
await sdk.forConsole.domains.createRecordAlias(
page.params.domain,
record.name,
record.value,
record.ttl,
record.comment
);
break;
}
await createRecord(record, page.params.domain);
}
}
@@ -20,8 +20,6 @@
import { invalidate } from '$app/navigation';
import { Dependencies } from '$lib/constants';
// type RecordType = 'A' | 'AAAA' | 'CNAME' | 'MX' | 'TXT' | 'NS' | 'SRV' | 'CAA' | 'PTR';
export let show = false;
export let selectedRecord: DnsRecord;
@@ -30,7 +28,6 @@
async function handleSubmit() {
try {
//TODO: update DNS record
switch (record.type) {
case 'A':
await sdk.forConsole.domains.updateRecordA(