From 0f3e4cb2256f571c84788c8ae36b3aa5bdcbccd7 Mon Sep 17 00:00:00 2001 From: "Masatoshi Kawazoe (acidlemon)" Date: Sat, 25 Nov 2023 12:15:16 +0900 Subject: [PATCH] =?UTF-8?q?icon=E3=82=92=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/go/user_handler.go | 61 +++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/webapp/go/user_handler.go b/webapp/go/user_handler.go index 4a42a9e..ae130d8 100644 --- a/webapp/go/user_handler.go +++ b/webapp/go/user_handler.go @@ -104,20 +104,29 @@ func getIconHandler(c echo.Context) error { return echo.NewHTTPError(http.StatusInternalServerError, "failed to get user: "+err.Error()) } - var image []byte - if err := tx.GetContext(ctx, &image, "SELECT image FROM icons WHERE user_id = ?", user.ID); err != nil { - if errors.Is(err, sql.ErrNoRows) { - return c.File(fallbackImage) - } else { - return echo.NewHTTPError(http.StatusInternalServerError, "failed to get user icon: "+err.Error()) - } + _, err = os.Stat(fmt.Sprintf("../img/user-%d.jpg", user.ID)) + if err != nil { + // ないね + return c.File(fallbackImage) + } + image, err := os.ReadFile(fmt.Sprintf("../img/user-%d.jpg", user.ID)) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, "failed to get user icon: "+err.Error()) } + // if err := tx.GetContext(ctx, &image, "SELECT image FROM icons WHERE user_id = ?", user.ID); err != nil { + // if errors.Is(err, sql.ErrNoRows) { + // return c.File(fallbackImage) + // } else { + // return echo.NewHTTPError(http.StatusInternalServerError, "failed to get user icon: "+err.Error()) + // } + // } + return c.Blob(http.StatusOK, "image/jpeg", image) } func postIconHandler(c echo.Context) error { - ctx := c.Request().Context() + //_ := c.Request().Context() if err := verifyUserSession(c); err != nil { // echo.NewHTTPErrorが返っているのでそのまま出力 @@ -134,29 +143,31 @@ func postIconHandler(c echo.Context) error { return echo.NewHTTPError(http.StatusBadRequest, "failed to decode the request body as json") } - tx, err := dbConn.BeginTxx(ctx, nil) - if err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "failed to begin transaction: "+err.Error()) - } - defer tx.Rollback() + os.WriteFile(fmt.Sprintf("../img/user-%d.jpg", userID), req.Image, 0644) - if _, err := tx.ExecContext(ctx, "DELETE FROM icons WHERE user_id = ?", userID); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "failed to delete old user icon: "+err.Error()) - } + // tx, err := dbConn.BeginTxx(ctx, nil) + // if err != nil { + // return echo.NewHTTPError(http.StatusInternalServerError, "failed to begin transaction: "+err.Error()) + // } + // defer tx.Rollback() - _, err = tx.ExecContext(ctx, "INSERT INTO icons (user_id, image) VALUES (?, ?)", userID, req.Image) - if err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "failed to insert new user icon: "+err.Error()) - } + // if _, err := tx.ExecContext(ctx, "DELETE FROM icons WHERE user_id = ?", userID); err != nil { + // return echo.NewHTTPError(http.StatusInternalServerError, "failed to delete old user icon: "+err.Error()) + // } - // iconID, err := rs.LastInsertId() + // _, err = tx.ExecContext(ctx, "INSERT INTO icons (user_id, image) VALUES (?, ?)", userID, req.Image) // if err != nil { - // return echo.NewHTTPError(http.StatusInternalServerError, "failed to get last inserted icon id: "+err.Error()) + // return echo.NewHTTPError(http.StatusInternalServerError, "failed to insert new user icon: "+err.Error()) // } - if err := tx.Commit(); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "failed to commit: "+err.Error()) - } + // // iconID, err := rs.LastInsertId() + // // if err != nil { + // // return echo.NewHTTPError(http.StatusInternalServerError, "failed to get last inserted icon id: "+err.Error()) + // // } + + // if err := tx.Commit(); err != nil { + // return echo.NewHTTPError(http.StatusInternalServerError, "failed to commit: "+err.Error()) + // } return c.JSON(http.StatusCreated, &PostIconResponse{ ID: 32,