Files

48 lines
946 B
Go

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
}
}