Files
open-im-server/pkg/common/db/controller/user.go
T

120 lines
4.3 KiB
Go
Raw Normal View History

2023-01-28 13:19:36 +08:00
package controller
2023-01-17 11:51:19 +08:00
import (
2023-02-02 16:39:29 +08:00
"Open_IM/pkg/common/constant"
2023-01-29 14:47:21 +08:00
"Open_IM/pkg/common/db/relation"
2023-02-03 12:16:48 +08:00
relation2 "Open_IM/pkg/common/db/table/relation"
2023-01-17 11:51:19 +08:00
"context"
2023-01-29 14:47:21 +08:00
"gorm.io/gorm"
2023-01-17 11:51:19 +08:00
)
2023-01-29 14:47:21 +08:00
type UserInterface interface {
2023-02-07 20:28:34 +08:00
//获取指定用户的信息 如有userID未找到 也返回错误
2023-02-03 12:16:48 +08:00
Find(ctx context.Context, userIDs []string) (users []*relation2.UserModel, err error)
2023-02-07 20:28:34 +08:00
//插入多条 外部保证userID 不重复 且在db中不存在
Create(ctx context.Context, users []*relation2.UserModel) (err error)
//更新(非零值) 外部保证userID存在
2023-02-03 12:16:48 +08:00
Update(ctx context.Context, users []*relation2.UserModel) (err error)
2023-02-07 20:28:34 +08:00
//更新(零值) 外部保证userID存在
2023-01-29 16:30:33 +08:00
UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error)
2023-02-07 20:28:34 +08:00
//获取,如果没找到,不返回错误
Get(ctx context.Context, pageNumber, showNumber int32) (users []*relation2.UserModel, count int64, err error)
2023-01-31 20:33:33 +08:00
//userIDs是否存在 只要有一个存在就为true
IsExist(ctx context.Context, userIDs []string) (exist bool, err error)
2023-01-17 11:51:19 +08:00
}
2023-01-29 14:47:21 +08:00
type UserController struct {
database UserDatabaseInterface
2023-01-17 11:51:19 +08:00
}
2023-02-03 12:16:48 +08:00
func (u *UserController) Find(ctx context.Context, userIDs []string) (users []*relation2.UserModel, err error) {
2023-01-29 14:47:21 +08:00
return u.database.Find(ctx, userIDs)
}
2023-02-03 12:16:48 +08:00
func (u *UserController) Create(ctx context.Context, users []*relation2.UserModel) error {
2023-01-29 14:47:21 +08:00
return u.database.Create(ctx, users)
}
2023-02-02 16:39:29 +08:00
2023-02-03 12:16:48 +08:00
func (u *UserController) Update(ctx context.Context, users []*relation2.UserModel) (err error) {
2023-01-29 14:47:21 +08:00
return u.database.Update(ctx, users)
}
2023-01-29 16:30:33 +08:00
func (u *UserController) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
return u.database.UpdateByMap(ctx, userID, args)
}
2023-02-02 16:39:29 +08:00
2023-02-07 20:28:34 +08:00
func (u *UserController) Get(ctx context.Context, pageNumber, showNumber int32) (users []*relation2.UserModel, count int64, err error) {
return u.database.Get(ctx, pageNumber, showNumber)
2023-01-29 17:46:11 +08:00
}
2023-02-02 16:39:29 +08:00
func (u *UserController) IsExist(ctx context.Context, userIDs []string) (exist bool, err error) {
2023-02-07 20:28:34 +08:00
return u.database.IsExist(ctx, userIDs)
2023-02-02 16:39:29 +08:00
}
2023-01-30 11:34:07 +08:00
func NewUserController(db *gorm.DB) *UserController {
2023-01-29 14:47:21 +08:00
controller := &UserController{database: newUserDatabase(db)}
return controller
}
type UserDatabaseInterface interface {
2023-02-03 12:16:48 +08:00
Find(ctx context.Context, userIDs []string) (users []*relation2.UserModel, err error)
Create(ctx context.Context, users []*relation2.UserModel) error
Update(ctx context.Context, users []*relation2.UserModel) (err error)
2023-01-29 16:30:33 +08:00
UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error)
2023-02-07 20:28:34 +08:00
Get(ctx context.Context, pageNumber, showNumber int32) (users []*relation2.UserModel, count int64, err error)
2023-02-02 16:39:29 +08:00
IsExist(ctx context.Context, userIDs []string) (exist bool, err error)
2023-01-17 11:51:19 +08:00
}
2023-01-29 14:47:21 +08:00
type UserDatabase struct {
2023-02-07 20:28:34 +08:00
user *relation.UserGorm
2023-01-29 14:47:21 +08:00
}
2023-01-30 11:34:07 +08:00
func newUserDatabase(db *gorm.DB) *UserDatabase {
2023-02-01 17:20:55 +08:00
sqlDB := relation.NewUserGorm(db)
2023-01-29 14:47:21 +08:00
database := &UserDatabase{
2023-02-07 20:28:34 +08:00
user: sqlDB,
2023-01-29 14:47:21 +08:00
}
return database
}
2023-02-07 20:28:34 +08:00
// 获取指定用户的信息 如有userID未找到 也返回错误
2023-02-03 12:16:48 +08:00
func (u *UserDatabase) Find(ctx context.Context, userIDs []string) (users []*relation2.UserModel, err error) {
2023-02-07 20:28:34 +08:00
users, err = u.user.Find(ctx, userIDs)
2023-02-02 16:39:29 +08:00
if err != nil {
return
}
if len(users) != len(userIDs) {
err = constant.ErrRecordNotFound.Wrap()
}
return
2023-01-29 14:47:21 +08:00
}
2023-02-07 20:28:34 +08:00
// 插入多条 外部保证userID 不重复 且在db中不存在
2023-02-03 12:16:48 +08:00
func (u *UserDatabase) Create(ctx context.Context, users []*relation2.UserModel) (err error) {
2023-02-07 20:28:34 +08:00
return u.user.Create(ctx, users)
2023-01-29 14:47:21 +08:00
}
2023-02-02 16:39:29 +08:00
2023-02-07 20:28:34 +08:00
// 更新(非零值) 外部保证userID存在
2023-02-03 12:16:48 +08:00
func (u *UserDatabase) Update(ctx context.Context, users []*relation2.UserModel) (err error) {
2023-02-07 20:28:34 +08:00
return u.user.Update(ctx, users)
2023-01-17 11:51:19 +08:00
}
2023-02-07 20:28:34 +08:00
// 更新(零值) 外部保证userID存在
2023-01-29 16:30:33 +08:00
func (u *UserDatabase) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
2023-02-07 20:28:34 +08:00
return u.user.UpdateByMap(ctx, userID, args)
2023-01-29 17:46:11 +08:00
}
2023-02-02 16:39:29 +08:00
// 获取,如果没找到,不返回错误
2023-02-03 12:16:48 +08:00
func (u *UserDatabase) Get(ctx context.Context, showNumber, pageNumber int32) (users []*relation2.UserModel, count int64, err error) {
2023-02-07 20:28:34 +08:00
return u.user.Get(ctx, showNumber, pageNumber)
2023-01-29 17:46:11 +08:00
}
2023-02-02 16:39:29 +08:00
// userIDs是否存在 只要有一个存在就为true
func (u *UserDatabase) IsExist(ctx context.Context, userIDs []string) (exist bool, err error) {
2023-02-07 20:28:34 +08:00
users, err := u.user.Find(ctx, userIDs)
2023-02-02 16:39:29 +08:00
if err != nil {
2023-02-07 20:28:34 +08:00
return false, err
2023-02-02 16:39:29 +08:00
}
if len(users) > 0 {
return true, nil
}
return false, nil
}