feat(api): chi-роутер, check/apply хендлеры, changeset DTO
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user