39 lines
943 B
Go
39 lines
943 B
Go
package controllers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/fiskerinc/cloud-services/pkg/utils"
|
|
"github.com/fiskerinc/cloud-services/pkg/loggerdataresp"
|
|
)
|
|
|
|
func NewGetModel(helper GetModelHelperInterface) *HandleGetModel {
|
|
return &HandleGetModel{Helper: helper}
|
|
}
|
|
|
|
type GetModelHelperInterface interface {
|
|
ParseGetModelParams(r *http.Request) interface{}
|
|
QueryLoad(model interface{}) error
|
|
HasPK(model interface{}) bool
|
|
}
|
|
|
|
type HandleGetModel struct {
|
|
Helper GetModelHelperInterface
|
|
}
|
|
|
|
func (h *HandleGetModel) Handle(w http.ResponseWriter, r *http.Request) {
|
|
item := h.Helper.ParseGetModelParams(r)
|
|
hasPK := h.Helper.HasPK(item)
|
|
if !hasPK {
|
|
loggerdataresp.BadDataErrorResp(w, ErrorPKRequired, http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
err := h.Helper.QueryLoad(item)
|
|
if loggerdataresp.BadDataErrorResp(w, err, http.StatusServiceUnavailable, loggerdataresp.PostgresNoRowsErrorCheck) {
|
|
return
|
|
}
|
|
|
|
utils.RespJSON(w, http.StatusOK, item)
|
|
}
|