package routes import ( "net/http" "strconv" "git.artlef.fr/bibliomane/internal/adapter" "git.artlef.fr/bibliomane/internal/appcontext" "git.artlef.fr/bibliomane/internal/dto" "git.artlef.fr/bibliomane/internal/model" "git.artlef.fr/bibliomane/internal/myvalidator" "github.com/gin-gonic/gin" ) func PutBookHandler(ac appcontext.AppContext) { bookId64, err := strconv.ParseUint(ac.C.Param("id"), 10, 64) bookId := uint(bookId64) if err != nil { ac.C.JSON(http.StatusBadRequest, gin.H{"error": err}) return } var book model.Book err = ac.Db.First(&book, bookId).Error if err != nil { myvalidator.ReturnErrorsAsJsonResponse(&ac, err) return } var bookPut dto.BookFields err = ac.C.ShouldBindJSON(&bookPut) if err != nil { myvalidator.ReturnErrorsAsJsonResponse(&ac, err) return } err = adapter.FillBookDbFromFields(ac, &bookPut, &book) if err != nil { myvalidator.ReturnErrorsAsJsonResponse(&ac, err) return } ac.Db.Save(&book) ac.C.String(http.StatusOK, "Success") }