34 lines
909 B
Go
34 lines
909 B
Go
package routes
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"git.artlef.fr/PersonalLibraryManager/internal/appcontext"
|
|
"git.artlef.fr/PersonalLibraryManager/internal/dto"
|
|
"git.artlef.fr/PersonalLibraryManager/internal/mapper"
|
|
"git.artlef.fr/PersonalLibraryManager/internal/model"
|
|
"git.artlef.fr/PersonalLibraryManager/internal/myvalidator"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func PostBookHandler(ac appcontext.AppContext) {
|
|
var book dto.BookPostCreate
|
|
err := ac.C.ShouldBindJSON(&book)
|
|
if err != nil {
|
|
myvalidator.ManageBindingError(ac, err)
|
|
return
|
|
}
|
|
user, fetchUserErr := ac.GetAuthenticatedUser()
|
|
if fetchUserErr != nil {
|
|
ac.C.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
bookDb := mapper.BookWsToDb(book, &user)
|
|
err = ac.Db.Model(&model.Book{}).Save(&bookDb).Error
|
|
if err != nil {
|
|
ac.C.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
ac.C.String(200, "Success")
|
|
}
|