1 Star 1 Fork 0

yanpin-dev / propeller

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
repo.go 1.43 KB
一键复制 编辑 原始数据 按行查看 历史
zh_season 提交于 2021-03-31 15:30 . add update example.
package example
import (
"fmt"
"github.com/pkg/errors"
"gorm.io/gorm"
)
type Repository interface {
Create(*User) error
Update(*User) error
Delete(uint64) error
FindByID(uint64) (*User, error)
FindAll() ([]*User, error)
UpdatePassword(username string, password string) error
}
func NewUserRepository(db *gorm.DB) Repository {
return &userRepo{db: db}
}
type userRepo struct {
db *gorm.DB
}
func (r *userRepo) Create(user *User) error {
return r.db.Create(user).Error
}
func (r *userRepo) Update(user *User) error {
if db := r.db.Updates(&User{
ID: user.ID,
Username: user.Username,
Password: user.Password,
Version: user.Version,
}); db.Error != nil {
return db.Error
} else {
if db.RowsAffected == 0 {
return errors.New(fmt.Sprintf("user record version mismatch, id=%d, update version=%d", user.ID, user.Version.Int64))
}
}
return nil
}
func (r *userRepo) Delete(id uint64) error {
return r.db.Delete(&User{}, "id=?", id).Error
}
func (r *userRepo) FindByID(id uint64) (*User, error) {
u := &User{}
if err := r.db.Where("id=?", id).First(u).Error; err != nil {
return nil, err
}
return u, nil
}
func (r *userRepo) FindAll() ([]*User, error) {
us := make([]*User, 0)
if err := r.db.Find(&us).Error; err != nil {
return nil, err
}
return us, nil
}
func (r *userRepo) UpdatePassword(username, password string) error {
return r.db.Where("username=?", username).Updates(&User{Password: password}).Error
}
Go
1
https://gitee.com/yanpin-dev/propeller.git
git@gitee.com:yanpin-dev/propeller.git
yanpin-dev
propeller
propeller
v0.3.3

搜索帮助