package api import ( "errors" "net/http" "git.artlef.fr/PersonalLibraryManager/internal/model" "github.com/gin-gonic/gin" "github.com/go-playground/validator/v10" "gorm.io/gorm" ) func GetBooksHanderl(c *gin.Context, db *gorm.DB) { var books []model.Book db.Model(&model.Book{}).Find(&books) c.JSON(http.StatusOK, books) } func PostBookHandler(c *gin.Context, db *gorm.DB) { var book bookPostCreate err := c.ShouldBindJSON(&book) if err != nil { manageBindingError(c, err) return } bookDb := book.toBook() err = db.Model(&model.Book{}).Save(&bookDb).Error if err != nil { manageDefaultError(c, err) return } c.String(200, "Success") } func PostUserHandler(c *gin.Context, db *gorm.DB) { var user userPostCreate err := c.ShouldBindJSON(&user) if err != nil { manageBindingError(c, err) return } userDb, err := user.toUser() if err != nil { manageDefaultError(c, err) return } err = db.Model(&model.User{}).Save(&userDb).Error if err != nil { manageDefaultError(c, err) return } c.String(200, "Success") } func manageBindingError(c *gin.Context, err error) { var ve validator.ValidationErrors if errors.As(err, &ve) { c.JSON(http.StatusBadRequest, getValidationErrors(&ve)) } else { manageDefaultError(c, err) } } func manageDefaultError(c *gin.Context, err error) { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) }