fix(CurrentRecipePointer): 🐛 Fix cache recipe

Remove continue last opened version
This commit is contained in:
pakintada@gmail.com 2024-04-11 16:59:37 +07:00
parent 4219c1cb43
commit 2b8745679f
16 changed files with 481 additions and 174 deletions

View file

@ -3,6 +3,7 @@ package routers
import (
"encoding/json"
"fmt"
"image"
"image/png"
"net/http"
"os"
@ -15,6 +16,7 @@ import (
"recipe-manager/services/logger"
"recipe-manager/services/recipe"
"recipe-manager/services/sheet"
"recipe-manager/services/user"
"strconv"
"strings"
"sync"
@ -31,6 +33,7 @@ type RecipeRouter struct {
recipeService recipe.RecipeService
taoLogger *logger.TaoLogger
cache_db *data.RedisCli
userService user.UserService
}
var (
@ -38,13 +41,14 @@ var (
updateMutex = sync.Mutex{}
)
func NewRecipeRouter(data *data.Data, recipeService recipe.RecipeService, sheetService sheet.SheetService, taoLogger *logger.TaoLogger, cache *data.RedisCli) *RecipeRouter {
func NewRecipeRouter(data *data.Data, recipeService recipe.RecipeService, sheetService sheet.SheetService, taoLogger *logger.TaoLogger, cache *data.RedisCli, userService user.UserService) *RecipeRouter {
return &RecipeRouter{
data,
sheetService,
recipeService,
taoLogger,
cache,
userService,
}
}
@ -214,6 +218,12 @@ func (rr *RecipeRouter) Route(r chi.Router) {
// ====================== Handler =================================
func (rr *RecipeRouter) dashBoard(w http.ResponseWriter, r *http.Request) {
// test socket
// u := r.Context().Value("user").(*models.User)
// // rr.taoLogger.Log.Debug("SockConn", zap.Any("Socket", rr.socket), zap.Any("user", u))
// userNewSocket := data.NewSocketCli(u.Name, "recipe:response")
// rr.taoLogger.Log.Debug("SockConn", zap.Any("Socket", userNewSocket))
w.Header().Add("Content-Type", "application/json")
country := r.URL.Query().Get("country")
@ -802,22 +812,40 @@ func (rr *RecipeRouter) getImageOfProductCode(w http.ResponseWriter, r *http.Req
return
}
// read image
imgFile, err := os.Open(fullPath)
// TODO: get from cache
var imgResult image.Image
// try cache
img, err := rr.cache_db.GetCacheImage(fullPath)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
defer imgFile.Close()
// read image
imgFile, err := os.Open(fullPath)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
defer imgFile.Close()
thisImage, err := png.Decode(imgFile)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
thisImage, err := png.Decode(imgFile)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
imgResult = thisImage
// set cache
err = rr.cache_db.SetImageToCache(fullPath, thisImage)
if err != nil {
rr.taoLogger.Log.Debug("CacheImage.SetError", zap.Any("error", err))
}
} else {
imgResult = img
rr.taoLogger.Log.Debug("CacheImage.OK", zap.Any("status", imgResult))
}
// write image
png.Encode(w, thisImage)
png.Encode(w, imgResult)
}
func APIhandler(w http.ResponseWriter, r *http.Request) bool {