package appcontext import ( "errors" "strconv" "git.artlef.fr/bibliomane/internal/config" "git.artlef.fr/bibliomane/internal/model" "github.com/gin-gonic/gin" "github.com/nicksnyder/go-i18n/v2/i18n" "gorm.io/gorm" ) type AppContext struct { C *gin.Context Db *gorm.DB I18n *i18n.Bundle Config *config.Config } func (ac AppContext) GetAuthenticatedUser() (model.User, error) { var user model.User username, userIsInContext := ac.C.Get("user") if !userIsInContext { return user, errors.New("User not found in context") } res := ac.Db.Where("name = ?", username).First(&user) return user, res.Error } func (ac AppContext) GetQueryLimit() (int, error) { l := ac.C.Query("limit") if l != "" { return strconv.Atoi(l) } else { return ac.Config.Limit, nil } } func (ac AppContext) GetQueryOffset() (int, error) { o := ac.C.Query("offset") if o != "" { return strconv.Atoi(o) } else { return 0, nil } }