// Data access objects layer of model token package repositories import ( "git.devices.local/mawas/golang-api-skeleton/lib/cache" "git.devices.local/mawas/golang-api-skeleton/lib/common" model "git.devices.local/mawas/golang-api-skeleton/models" "gorm.io/gorm" ) type TokenDAO struct { repo } // NewTokenRepository create new repository for model token func NewTokenRepository(db *gorm.DB, userID string, username string, cache cache.Cache) *TokenDAO { db = db.Set("username", username).Set("userID", userID).Set("cache", cache) return &TokenDAO{ repo: repo{ db: db, userID: userID, username: username, }, } } func (dao *TokenDAO) ReadByKey(key interface{}) (*model.Token, error) { token := model.Token{} t, _ := common.StringToGUID(key.(string)) err := dao.db.Where(model.Token{Token: t}).First(&token).Error return &token, err } func (dao *TokenDAO) ReadAll() ([]*model.Token, error) { var tokens []*model.Token err := dao.db.Find(&tokens).Error return tokens, err } func (dao *TokenDAO) Create(token *model.Token) (*model.Token, error) { err := dao.db.Create(token).Error if cc, ok := dao.db.Get("cache"); ok { if c, ok := cc.(cache.Cache); ok { username, err := c.Get("user:" + token.UserID.String()) if err != nil { return nil, err } if username != nil { token.Username = *username } } } return token, err }