weldr: inline composesToComposeEntries

This function had two modes (`uuids == nil` and `uuids != nil`). Instead
of splitting it up into one function for each mode, inline it at call
sites. It was only used three times.
This commit is contained in:
Lars Karlitski 2020-04-28 09:42:36 +02:00 committed by Tom Gundersen
parent cbf0ec05b4
commit d74a63f4f2
2 changed files with 21 additions and 32 deletions

View file

@ -1683,7 +1683,14 @@ func (api *API) composeStatusHandler(writer http.ResponseWriter, request *http.R
filteredUUIDs = append(filteredUUIDs, id)
}
reply.UUIDs = composesToComposeEntries(composes, filteredUUIDs, isRequestVersionAtLeast(params, 1))
reply.UUIDs = []*ComposeEntry{}
includeUploads := isRequestVersionAtLeast(params, 1)
for _, id := range filteredUUIDs {
if compose, exists := composes[id]; exists {
reply.UUIDs = append(reply.UUIDs, composeToComposeEntry(id, compose, includeUploads))
}
}
sortComposeEntries(reply.UUIDs)
err = json.NewEncoder(writer).Encode(reply)
common.PanicOnError(err)
@ -1986,13 +1993,13 @@ func (api *API) composeFinishedHandler(writer http.ResponseWriter, request *http
Finished []*ComposeEntry `json:"finished"`
}{[]*ComposeEntry{}}
composes := api.store.GetAllComposes()
for _, entry := range composesToComposeEntries(composes, nil, isRequestVersionAtLeast(params, 1)) {
switch entry.QueueStatus {
case common.IBFinished:
reply.Finished = append(reply.Finished, entry)
includeUploads := isRequestVersionAtLeast(params, 1)
for id, compose := range api.store.GetAllComposes() {
if compose.ImageBuilds[0].QueueStatus == common.IBFinished {
reply.Finished = append(reply.Finished, composeToComposeEntry(id, compose, includeUploads))
}
}
sortComposeEntries(reply.Finished)
err := json.NewEncoder(writer).Encode(reply)
common.PanicOnError(err)
@ -2007,13 +2014,13 @@ func (api *API) composeFailedHandler(writer http.ResponseWriter, request *http.R
Failed []*ComposeEntry `json:"failed"`
}{[]*ComposeEntry{}}
composes := api.store.GetAllComposes()
for _, entry := range composesToComposeEntries(composes, nil, isRequestVersionAtLeast(params, 1)) {
switch entry.QueueStatus {
case common.IBFailed:
reply.Failed = append(reply.Failed, entry)
includeUploads := isRequestVersionAtLeast(params, 1)
for id, compose := range api.store.GetAllComposes() {
if compose.ImageBuilds[0].QueueStatus == common.IBFailed {
reply.Failed = append(reply.Failed, composeToComposeEntry(id, compose, includeUploads))
}
}
sortComposeEntries(reply.Failed)
err := json.NewEncoder(writer).Encode(reply)
common.PanicOnError(err)

View file

@ -59,26 +59,8 @@ func composeToComposeEntry(id uuid.UUID, compose compose.Compose, includeUploads
return &composeEntry
}
func composesToComposeEntries(composes map[uuid.UUID]compose.Compose, uuids []uuid.UUID, includeUploads bool) []*ComposeEntry {
var composeEntries []*ComposeEntry
if uuids == nil {
composeEntries = make([]*ComposeEntry, 0, len(composes))
for id, compose := range composes {
composeEntries = append(composeEntries, composeToComposeEntry(id, compose, includeUploads))
}
} else {
composeEntries = make([]*ComposeEntry, 0, len(uuids))
for _, id := range uuids {
if compose, exists := composes[id]; exists {
composeEntries = append(composeEntries, composeToComposeEntry(id, compose, includeUploads))
}
}
}
// make this function output more predictable
sort.Slice(composeEntries, func(i, j int) bool {
return composeEntries[i].ID.String() < composeEntries[j].ID.String()
func sortComposeEntries(entries []*ComposeEntry) {
sort.Slice(entries, func(i, j int) bool {
return entries[i].ID.String() < entries[j].ID.String()
})
return composeEntries
}