You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

43 lines
1.2 KiB

// Data access objects layer of model user
package repositories
import (
"git.devices.local/mawas/golang-api-skeleton/lib/cache"
model "git.devices.local/mawas/golang-api-skeleton/models"
"gorm.io/gorm"
)
type UserDAO struct {
repo
}
// NewUserDAO create new repository for model user
func NewUserRepository(db *gorm.DB, userID string, username string, cache cache.Cache) *UserDAO {
db = db.Set("username", username).Set("userID", userID).Set("cache", cache)
return &UserDAO{
repo: repo{
db: db,
userID: userID,
username: username,
},
}
}
func (dao *UserDAO) ReadByUsername(username string) (*model.User, error) {
result := model.User{}
// err := dao.db.Joins("TokensRef").Where(&model.User{Username: username}).First(&result).Error
err := dao.db.Preload("TokensRef").Where(&model.User{Username: username}).First(&result).Error
// err := dao.db.Where(&model.User{Username: username}).First(&result).Error
return &result, err
}
func (dao *UserDAO) ReadAll() ([]*model.User, error) {
var result []*model.User
err := dao.db.Preload("TokensRef").Find(&result).Error
return result, err
}
func (dao *UserDAO) Create(user *model.User) (*model.User, error) {
err := dao.db.Create(user).Error
return user, err
}