48 lines
970 B
Go
48 lines
970 B
Go
package appcontext
|
|
|
|
import (
|
|
"errors"
|
|
"strconv"
|
|
|
|
"git.artlef.fr/PersonalLibraryManager/internal/config"
|
|
"git.artlef.fr/PersonalLibraryManager/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
|
|
}
|
|
}
|