feat: remove domains whose zones vanished at the provider on import
This commit is contained in:
@@ -130,19 +130,26 @@ func (a *API) handleImportZones(w http.ResponseWriter, r *http.Request) {
|
||||
writeErr(w, http.StatusInternalServerError, "internal error")
|
||||
return
|
||||
}
|
||||
// Imported atomically: either every zone becomes a domain or none does,
|
||||
// so a mid-batch provider/DB error never leaves a partial import behind.
|
||||
doms, err := a.Store.ImportDomains(r.Context(), pid, aid, zones)
|
||||
// Imported atomically: either every zone becomes a domain (and vanished
|
||||
// zones' domains are deleted) or none of it happens, so a mid-batch
|
||||
// provider/DB error never leaves a partial sync behind.
|
||||
doms, gone, err := a.Store.ImportDomains(r.Context(), pid, aid, zones)
|
||||
if err != nil {
|
||||
log.Printf("api: import: create domains failed: %v", err)
|
||||
log.Printf("api: import: sync domains failed: %v", err)
|
||||
writeErr(w, http.StatusInternalServerError, "internal error")
|
||||
return
|
||||
}
|
||||
created := make([]domainResponse, 0, len(doms))
|
||||
for _, d := range doms {
|
||||
created = append(created, toDomainResponse(d))
|
||||
resp := importResponse{
|
||||
Created: make([]domainResponse, 0, len(doms)),
|
||||
Removed: make([]domainResponse, 0, len(gone)),
|
||||
}
|
||||
writeJSON(w, http.StatusCreated, created)
|
||||
for _, d := range doms {
|
||||
resp.Created = append(resp.Created, toDomainResponse(d))
|
||||
}
|
||||
for _, d := range gone {
|
||||
resp.Removed = append(resp.Removed, toDomainResponse(d))
|
||||
}
|
||||
writeJSON(w, http.StatusCreated, resp)
|
||||
}
|
||||
|
||||
// --- templates ---
|
||||
|
||||
Reference in New Issue
Block a user