package api import "github.com/vasyakrg/dns-autoresolver/internal/diff" type applyRequest struct { ApplyUpdates bool `json:"applyUpdates"` ApplyPrunes bool `json:"applyPrunes"` } type recordView struct { Kind string `json:"kind"` Type string `json:"type"` Name string `json:"name"` Desired []string `json:"desired,omitempty"` Actual []string `json:"actual,omitempty"` ReadOnly bool `json:"readOnly"` } type changesetResponse struct { Updates []recordView `json:"updates"` Prunes []recordView `json:"prunes"` ReadOnly []recordView `json:"readOnly"` InSync int `json:"inSyncCount"` } func toRecordView(d diff.RecordDiff) recordView { rv := recordView{Kind: string(d.Kind), Type: string(d.Type), Name: d.Name, ReadOnly: d.ReadOnly} if d.Desired != nil { rv.Desired = d.Desired.Values } if d.Actual != nil { rv.Actual = d.Actual.Values } return rv } func toChangesetResponse(cs diff.Changeset) changesetResponse { resp := changesetResponse{} for _, d := range cs.Updates() { resp.Updates = append(resp.Updates, toRecordView(d)) } for _, d := range cs.Prunes() { resp.Prunes = append(resp.Prunes, toRecordView(d)) } for _, d := range cs.Diffs { if d.ReadOnly { resp.ReadOnly = append(resp.ReadOnly, toRecordView(d)) } if d.Kind == diff.InSync { resp.InSync++ } } return resp }