29 lines
1.1 KiB
Text
29 lines
1.1 KiB
Text
sequenceDiagram
|
|
actor Admin
|
|
participant UI as Web UI React
|
|
participant TRPC as tRPC Client
|
|
participant API as domainsRouter
|
|
participant DB as PostgreSQL/Drizzle
|
|
participant Checker as domain-check module
|
|
participant DNS as DNS Resolver
|
|
|
|
Admin->>UI: Isi form domain dan pilih service
|
|
UI->>TRPC: domains.create({ serviceId, name, expectedServerIp? })
|
|
TRPC->>API: Kirim request create domain
|
|
API->>DB: Validasi service dan server parent
|
|
API->>DB: Insert domain, default expected IP dari server parent jika kosong
|
|
DB-->>API: Domain berhasil dibuat
|
|
API-->>TRPC: Data domain baru
|
|
TRPC-->>UI: Data domain baru
|
|
UI->>TRPC: domains.check({ id: created.id }) otomatis
|
|
TRPC->>API: Kirim request DNS check
|
|
API->>DB: Ambil domain berdasarkan id
|
|
API->>Checker: runAndPersistDomainCheck(...)
|
|
Checker->>DNS: resolve4(domain.name)
|
|
DNS-->>Checker: Daftar IPv4 atau error
|
|
Checker->>DB: Update resolutionStatus dan hasil check
|
|
DB-->>Checker: Domain terbaru
|
|
Checker-->>API: { domain, result }
|
|
API-->>TRPC: { domain, check }
|
|
TRPC-->>UI: Hasil DNS check
|
|
UI->>UI: Invalidate domains.list, navigate detail, tampilkan toast
|