add edit json v1 WIP, testing
This commit is contained in:
parent
e5eee656d5
commit
ea92145350
11 changed files with 216 additions and 67 deletions
|
|
@ -2,15 +2,19 @@ package routers
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/fs"
|
||||
"net/http"
|
||||
"os"
|
||||
"recipe-manager/data"
|
||||
"recipe-manager/models"
|
||||
"recipe-manager/services/logger"
|
||||
"recipe-manager/services/sheet"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type RecipeRouter struct {
|
||||
|
|
@ -18,6 +22,10 @@ type RecipeRouter struct {
|
|||
sheetService sheet.SheetService
|
||||
}
|
||||
|
||||
var (
|
||||
Log = logger.GetInstance()
|
||||
)
|
||||
|
||||
func NewRecipeRouter(data *data.Data, sheetService sheet.SheetService) *RecipeRouter {
|
||||
return &RecipeRouter{
|
||||
data: data,
|
||||
|
|
@ -143,5 +151,53 @@ func (rr *RecipeRouter) Route(r chi.Router) {
|
|||
}
|
||||
json.NewEncoder(w).Encode(mapResult)
|
||||
})
|
||||
|
||||
r.Post("/edit/{version}", func(w http.ResponseWriter, r *http.Request) {
|
||||
Log.Debug("Edit: ", zap.String("path", r.RequestURI))
|
||||
version := chi.URLParam(r, "version")
|
||||
target_recipe := rr.data.GetRecipe(version)
|
||||
|
||||
Log.Debug("Target => ", zap.Any("target", target_recipe.MachineSetting.ConfigNumber))
|
||||
|
||||
// Body
|
||||
var changes models.Recipe01
|
||||
err := json.NewDecoder(r.Body).Decode(&changes)
|
||||
if err != nil {
|
||||
Log.Error("Decode in request failed: ", zap.Error(err))
|
||||
}
|
||||
|
||||
Log.Debug("Changes: ", zap.Any("changes", changes))
|
||||
// TODO: find the matched pd
|
||||
target_menu := rr.data.GetRecipe01ByProductCode(changes.ProductCode)
|
||||
|
||||
menu_map := target_menu.ToMap()
|
||||
change_map := changes.ToMap()
|
||||
|
||||
// Find changes
|
||||
for key, val := range menu_map {
|
||||
if val != change_map[key] {
|
||||
menu_map[key] = change_map[key]
|
||||
}
|
||||
}
|
||||
|
||||
// Apply changes
|
||||
tempRecipe := models.Recipe01{}
|
||||
tempRecipe = tempRecipe.FromMap(menu_map)
|
||||
rr.data.SetValuesToRecipe(tempRecipe)
|
||||
|
||||
finalData := rr.data.ExportToJSON()
|
||||
temp_finalData, err := json.MarshalIndent(finalData, "", " ")
|
||||
if err != nil {
|
||||
Log.Error("Error when indent marshal recipe", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
os.WriteFile("./cofffeemachineConfig/coffeethai02_"+version+".json", temp_finalData, fs.FileMode(0666))
|
||||
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(map[string]interface{}{
|
||||
"status": "OK",
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue