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