49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package controllers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/fiskerinc/cloud-services/pkg/utils"
|
|
"github.com/go-pg/pg/v10/orm"
|
|
"github.com/fiskerinc/cloud-services/pkg/loggerdataresp"
|
|
)
|
|
|
|
func NewUpdate(helper UpdateHelperInterface) *HandleUpdate {
|
|
return &HandleUpdate{Helper: helper}
|
|
}
|
|
|
|
type UpdateHelperInterface interface {
|
|
ParseRequest(r *http.Request, model interface{}) error
|
|
QueryUpdate(model interface{}) (orm.Result, error)
|
|
NewModel() interface{}
|
|
ValidatePK(model interface{}) error
|
|
}
|
|
|
|
type HandleUpdate struct {
|
|
Helper UpdateHelperInterface
|
|
}
|
|
|
|
func (h *HandleUpdate) Handle(w http.ResponseWriter, r *http.Request) {
|
|
model := h.Helper.NewModel()
|
|
err := h.ParseRequest(r, model)
|
|
if loggerdataresp.BadDataErrorResp(w, err, http.StatusBadRequest) {
|
|
return
|
|
}
|
|
|
|
_, err = h.Helper.QueryUpdate(model)
|
|
if loggerdataresp.BadDataErrorResp(w, err, http.StatusServiceUnavailable, loggerdataresp.PostgresNoRowsErrorCheck) {
|
|
return
|
|
}
|
|
|
|
utils.RespJSON(w, http.StatusOK, model)
|
|
}
|
|
|
|
func (h *HandleUpdate) ParseRequest(r *http.Request, model interface{}) error {
|
|
err := h.Helper.ParseRequest(r, model)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return h.Helper.ValidatePK(model)
|
|
}
|