/
duty_stations.go
60 lines (50 loc) · 1.92 KB
/
duty_stations.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package internalapi
import (
"github.com/go-openapi/runtime/middleware"
"github.com/go-openapi/swag"
"github.com/gofrs/uuid"
"go.uber.org/zap"
stationop "github.com/transcom/mymove/pkg/gen/internalapi/internaloperations/duty_stations"
"github.com/transcom/mymove/pkg/gen/internalmessages"
"github.com/transcom/mymove/pkg/handlers"
"github.com/transcom/mymove/pkg/models"
)
func payloadForDutyStationModel(station models.DutyStation) *internalmessages.DutyStationPayload {
// If the station ID has no UUID then it isn't real data
// Unlike other payloads the
if station.ID == uuid.Nil {
return nil
}
payload := internalmessages.DutyStationPayload{
ID: handlers.FmtUUID(station.ID),
CreatedAt: handlers.FmtDateTime(station.CreatedAt),
UpdatedAt: handlers.FmtDateTime(station.UpdatedAt),
Name: swag.String(station.Name),
Affiliation: &station.Affiliation,
Address: payloadForAddressModel(&station.Address),
}
if station.TransportationOfficeID != nil {
payload.TransportationOffice = payloadForTransportationOfficeModel(station.TransportationOffice)
}
return &payload
}
// SearchDutyStationsHandler returns a list of all issues
type SearchDutyStationsHandler struct {
handlers.HandlerContext
}
// Handle returns a list of stations based on the search query
func (h SearchDutyStationsHandler) Handle(params stationop.SearchDutyStationsParams) middleware.Responder {
var stations models.DutyStations
var err error
stations, err = models.FindDutyStations(h.DB(), params.Search)
if err != nil {
h.Logger().Error("Finding duty stations", zap.Error(err))
return stationop.NewSearchDutyStationsInternalServerError()
}
stationPayloads := make(internalmessages.DutyStationsPayload, len(stations))
for i, station := range stations {
stationPayload := payloadForDutyStationModel(station)
stationPayloads[i] = stationPayload
}
return stationop.NewSearchDutyStationsOK().WithPayload(stationPayloads)
}