Error code standardization

This commit is contained in:
skiffer-git 2023-02-21 10:29:09 +08:00
parent f5fbe1d852
commit e27d66cd2e
4 changed files with 39 additions and 56 deletions

View File

@ -29,15 +29,15 @@ type userServer struct {
} }
func Start(client *openKeeper.ZkClient, server *grpc.Server) error { func Start(client *openKeeper.ZkClient, server *grpc.Server) error {
mysql, err := relation.NewGormDB() gormDB, err := relation.NewGormDB()
if err != nil { if err != nil {
return err return err
} }
if err := mysql.AutoMigrate(&tablerelation.UserModel{}); err != nil { if err := gormDB.AutoMigrate(&tablerelation.UserModel{}); err != nil {
return err return err
} }
pbuser.RegisterUserServer(server, &userServer{ pbuser.RegisterUserServer(server, &userServer{
UserInterface: controller.NewUserController(mysql), UserInterface: controller.NewUserController(controller.NewUserDatabase(relation.NewUserGorm(gormDB))),
notification: notification.NewCheck(client), notification: notification.NewCheck(client),
userCheck: check.NewUserCheck(client), userCheck: check.NewUserCheck(client),
RegisterCenter: client, RegisterCenter: client,

View File

@ -5,7 +5,6 @@ import (
"Open_IM/pkg/common/db/relation" "Open_IM/pkg/common/db/relation"
relationTb "Open_IM/pkg/common/db/table/relation" relationTb "Open_IM/pkg/common/db/table/relation"
"context" "context"
"gorm.io/gorm"
) )
type UserInterface interface { type UserInterface interface {
@ -62,9 +61,8 @@ func (u *UserController) GetAllUserID(ctx context.Context) ([]string, error) {
return u.database.GetAllUserID(ctx) return u.database.GetAllUserID(ctx)
} }
func NewUserController(db *gorm.DB) *UserController { func NewUserController(database UserDatabaseInterface) *UserController {
controller := &UserController{database: newUserDatabase(db)} return &UserController{database}
return controller
} }
type UserDatabaseInterface interface { type UserDatabaseInterface interface {
@ -87,20 +85,17 @@ type UserDatabaseInterface interface {
} }
type UserDatabase struct { type UserDatabase struct {
user *relation.UserGorm userDB relation.User
} }
func newUserDatabase(db *gorm.DB) *UserDatabase { func NewUserDatabase(userDB relation.User) *UserDatabase {
sqlDB := relation.NewUserGorm(db) return &UserDatabase{userDB: userDB}
database := &UserDatabase{
user: sqlDB,
}
return database
} }
// 获取指定用户的信息 如有userID未找到 也返回错误 // 获取指定用户的信息 如有userID未找到 也返回错误
func (u *UserDatabase) FindWithError(ctx context.Context, userIDs []string) (users []*relationTb.UserModel, err error) { func (u *UserDatabase) FindWithError(ctx context.Context, userIDs []string) (users []*relationTb.UserModel, err error) {
users, err = u.user.Find(ctx, userIDs)
users, err = u.userDB.Find(ctx, userIDs)
if err != nil { if err != nil {
return return
} }
@ -112,33 +107,33 @@ func (u *UserDatabase) FindWithError(ctx context.Context, userIDs []string) (use
// 获取指定用户的信息 如有userID未找到 不返回错误 // 获取指定用户的信息 如有userID未找到 不返回错误
func (u *UserDatabase) Find(ctx context.Context, userIDs []string) (users []*relationTb.UserModel, err error) { func (u *UserDatabase) Find(ctx context.Context, userIDs []string) (users []*relationTb.UserModel, err error) {
users, err = u.user.Find(ctx, userIDs) users, err = u.userDB.Find(ctx, userIDs)
return return
} }
// 插入多条 外部保证userID 不重复 且在db中不存在 // 插入多条 外部保证userID 不重复 且在db中不存在
func (u *UserDatabase) Create(ctx context.Context, users []*relationTb.UserModel) (err error) { func (u *UserDatabase) Create(ctx context.Context, users []*relationTb.UserModel) (err error) {
return u.user.Create(ctx, users) return u.userDB.Create(ctx, users)
} }
// 更新(非零值) 外部保证userID存在 // 更新(非零值) 外部保证userID存在
func (u *UserDatabase) Update(ctx context.Context, users []*relationTb.UserModel) (err error) { func (u *UserDatabase) Update(ctx context.Context, users []*relationTb.UserModel) (err error) {
return u.user.Update(ctx, users) return u.userDB.Update(ctx, users)
} }
// 更新(零值) 外部保证userID存在 // 更新(零值) 外部保证userID存在
func (u *UserDatabase) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) { func (u *UserDatabase) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
return u.user.UpdateByMap(ctx, userID, args) return u.userDB.UpdateByMap(ctx, userID, args)
} }
// 获取,如果没找到,不返回错误 // 获取,如果没找到,不返回错误
func (u *UserDatabase) Page(ctx context.Context, showNumber, pageNumber int32) (users []*relationTb.UserModel, count int64, err error) { func (u *UserDatabase) Page(ctx context.Context, showNumber, pageNumber int32) (users []*relationTb.UserModel, count int64, err error) {
return u.user.Page(ctx, showNumber, pageNumber) return u.userDB.Page(ctx, showNumber, pageNumber)
} }
// userIDs是否存在 只要有一个存在就为true // userIDs是否存在 只要有一个存在就为true
func (u *UserDatabase) IsExist(ctx context.Context, userIDs []string) (exist bool, err error) { func (u *UserDatabase) IsExist(ctx context.Context, userIDs []string) (exist bool, err error) {
users, err := u.user.Find(ctx, userIDs) users, err := u.userDB.Find(ctx, userIDs)
if err != nil { if err != nil {
return false, err return false, err
} }
@ -149,5 +144,5 @@ func (u *UserDatabase) IsExist(ctx context.Context, userIDs []string) (exist boo
} }
func (u *UserDatabase) GetAllUserID(ctx context.Context) ([]string, error) { func (u *UserDatabase) GetAllUserID(ctx context.Context) ([]string, error) {
return u.user.GetAllUserID(ctx) return u.userDB.GetAllUserID(ctx)
} }

View File

@ -58,6 +58,7 @@ func newMysqlGormDB() (*gorm.DB, error) {
return db, nil return db, nil
} }
// gorm mysql
func NewGormDB() (*gorm.DB, error) { func NewGormDB() (*gorm.DB, error) {
return newMysqlGormDB() return newMysqlGormDB()
} }

View File

@ -5,18 +5,28 @@ import (
"Open_IM/pkg/common/tracelog" "Open_IM/pkg/common/tracelog"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
"fmt"
"gorm.io/gorm" "gorm.io/gorm"
) )
type User interface {
Create(ctx context.Context, users []*relation.UserModel, tx ...any) (err error)
UpdateByMap(ctx context.Context, userID string, args map[string]interface{}, tx ...any) (err error)
Update(ctx context.Context, users []*relation.UserModel, tx ...any) (err error)
// 获取指定用户信息 不存在,也不返回错误
Find(ctx context.Context, userIDs []string, tx ...any) (users []*relation.UserModel, err error)
// 获取某个用户信息 不存在,则返回错误
Take(ctx context.Context, userID string, tx ...any) (user *relation.UserModel, err error)
// 获取用户信息 不存在,不返回错误
Page(ctx context.Context, pageNumber, showNumber int32, tx ...any) (users []*relation.UserModel, count int64, err error)
GetAllUserID(ctx context.Context) (userIDs []string, err error)
}
type UserGorm struct { type UserGorm struct {
DB *gorm.DB DB *gorm.DB
} }
func NewUserGorm(db *gorm.DB) *UserGorm { func NewUserGorm(DB *gorm.DB) *UserGorm {
var user UserGorm return &UserGorm{DB: DB}
user.DB = db
return &user
} }
// 插入多条 // 插入多条
@ -62,32 +72,6 @@ func (u *UserGorm) Take(ctx context.Context, userID string, tx ...any) (user *re
return user, err return user, err
} }
// 通过名字查找用户 不存在,不返回错误
func (u *UserGorm) GetByName(ctx context.Context, userName string, pageNumber, showNumber int32, tx ...any) (users []*relation.UserModel, count int64, err error) {
defer func() {
tracelog.SetCtxDebug(ctx, utils.GetFuncName(1), err, "userName", userName, "pageNumber", pageNumber, "showNumber", showNumber, "users", users, "count", count)
}()
err = utils.Wrap(getDBConn(u.DB, tx).Model(&relation.UserModel{}).Where(" name like ?", fmt.Sprintf("%%%s%%", userName)).Count(&count).Error, "")
if err != nil {
return
}
err = utils.Wrap(getDBConn(u.DB, tx).Model(&relation.UserModel{}).Where(" name like ?", fmt.Sprintf("%%%s%%", userName)).Limit(int(showNumber)).Offset(int(showNumber*pageNumber)).Find(&users).Error, "")
return
}
// 通过名字或userID查找用户 不存在,不返回错误
func (u *UserGorm) GetByNameAndID(ctx context.Context, content string, pageNumber, showNumber int32, tx ...any) (users []*relation.UserModel, count int64, err error) {
defer func() {
tracelog.SetCtxDebug(ctx, utils.GetFuncName(1), err, "content", content, "pageNumber", pageNumber, "showNumber", showNumber, "users", users, "count", count)
}()
db := getDBConn(u.DB, tx).Model(&relation.UserModel{}).Where(" name like ? or user_id = ? ", fmt.Sprintf("%%%s%%", content), content)
if err = db.Count(&count).Error; err != nil {
return
}
err = utils.Wrap(db.Limit(int(showNumber)).Offset(int(showNumber*pageNumber)).Find(&users).Error, "")
return
}
// 获取用户信息 不存在,不返回错误 // 获取用户信息 不存在,不返回错误
func (u *UserGorm) Page(ctx context.Context, pageNumber, showNumber int32, tx ...any) (users []*relation.UserModel, count int64, err error) { func (u *UserGorm) Page(ctx context.Context, pageNumber, showNumber int32, tx ...any) (users []*relation.UserModel, count int64, err error) {
defer func() { defer func() {
@ -102,8 +86,11 @@ func (u *UserGorm) Page(ctx context.Context, pageNumber, showNumber int32, tx ..
} }
// 获取所有用户ID // 获取所有用户ID
func (u *UserGorm) GetAllUserID(ctx context.Context) ([]string, error) { func (u *UserGorm) GetAllUserID(ctx context.Context) (userIDs []string, err error) {
var userIDs []string defer func() {
err := u.DB.Pluck("user_id", &userIDs).Error tracelog.SetCtxDebug(ctx, utils.GetFuncName(1), err, "userIDs", userIDs)
}()
err = u.DB.Pluck("user_id", &userIDs).Error
return userIDs, err return userIDs, err
} }