add topping WIP
This commit is contained in:
parent
cabfcdee15
commit
16e0e4f9d8
11 changed files with 460 additions and 26 deletions
69
server/routers/topping.go
Normal file
69
server/routers/topping.go
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
package routers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"recipe-manager/data"
|
||||
"recipe-manager/services/logger"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// this does different from normal topping fetcher in recipe
|
||||
|
||||
type ToppingRouter struct {
|
||||
data *data.Data
|
||||
taoLogger *logger.TaoLogger
|
||||
}
|
||||
|
||||
func NewToppingRouter(data *data.Data, taoLogger *logger.TaoLogger) *ToppingRouter {
|
||||
return &ToppingRouter{
|
||||
data: data,
|
||||
taoLogger: taoLogger,
|
||||
}
|
||||
}
|
||||
|
||||
func (tr *ToppingRouter) Route(r chi.Router) {
|
||||
r.Route("/toppings", func(r chi.Router) {
|
||||
r.Get("/groups/{country}/{filename}", tr.GetToppingGroups)
|
||||
r.Get("/lists/{country}/{filename}", tr.GetToppingLists)
|
||||
})
|
||||
}
|
||||
|
||||
// get all topping group
|
||||
func (tr *ToppingRouter) GetToppingGroups(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
|
||||
// just in case: params country and filename
|
||||
country := chi.URLParam(r, "country")
|
||||
filename := chi.URLParam(r, "filename")
|
||||
|
||||
// get topping groups
|
||||
toppingGroups := tr.data.GetAllToppingGroups(country, filename)
|
||||
|
||||
// send without new mapping
|
||||
|
||||
if err := json.NewEncoder(w).Encode(toppingGroups); err != nil {
|
||||
tr.taoLogger.Log.Error("ToppingRouter.GetToppingGroups", zap.Error(err))
|
||||
http.Error(w, "Internal Error", http.StatusInternalServerError)
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func (tr *ToppingRouter) GetToppingLists(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
|
||||
country := chi.URLParam(r, "country")
|
||||
filename := chi.URLParam(r, "filename")
|
||||
|
||||
// get toppping list
|
||||
toppingLists := tr.data.GetToppingsList(country, filename)
|
||||
|
||||
if err := json.NewEncoder(w).Encode(toppingLists); err != nil {
|
||||
tr.taoLogger.Log.Debug("ToppingRouter.GetToppingLists", zap.Error(err))
|
||||
http.Error(w, "Internal Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue