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.
Open-IM-Server/pkg/common/db/controller/user.go

70 lines
2.2 KiB

2 years ago
package controller
import (
"Open_IM/pkg/common/db/relation"
"context"
"gorm.io/gorm"
)
type UserInterface interface {
Find(ctx context.Context, userIDs []string) (users []*relation.User, err error)
Create(ctx context.Context, users []*relation.User) error
Take(ctx context.Context, userID string) (user *relation.User, err error)
Update(ctx context.Context, users []*relation.User) (err error)
}
type UserController struct {
database UserDatabaseInterface
}
func (u *UserController) Find(ctx context.Context, userIDs []string) (users []*relation.User, err error) {
return u.database.Find(ctx, userIDs)
}
func (u *UserController) Create(ctx context.Context, users []*relation.User) error {
return u.database.Create(ctx, users)
}
func (u *UserController) Take(ctx context.Context, userID string) (user *relation.User, err error) {
return u.database.Take(ctx, userID)
}
func (u *UserController) Update(ctx context.Context, users []*relation.User) (err error) {
return u.database.Update(ctx, users)
}
func NewUserController(db *gorm.DB) UserInterface {
controller := &UserController{database: newUserDatabase(db)}
return controller
}
type UserDatabaseInterface interface {
Find(ctx context.Context, userIDs []string) (users []*relation.User, err error)
Create(ctx context.Context, users []*relation.User) error
Take(ctx context.Context, userID string) (user *relation.User, err error)
Update(ctx context.Context, users []*relation.User) (err error)
}
type UserDatabase struct {
sqlDB *relation.User
}
func newUserDatabase(db *gorm.DB) UserDatabaseInterface {
sqlDB := relation.NewUserDB(db)
database := &UserDatabase{
sqlDB: sqlDB,
}
return database
}
func (u *UserDatabase) Find(ctx context.Context, userIDs []string) (users []*relation.User, err error) {
return u.sqlDB.Find(ctx, userIDs)
}
func (u *UserDatabase) Create(ctx context.Context, users []*relation.User) error {
return u.sqlDB.Create(ctx, users)
}
func (u *UserDatabase) Take(ctx context.Context, userID string) (user *relation.User, err error) {
return u.sqlDB.Take(ctx, userID)
}
func (u *UserDatabase) Update(ctx context.Context, users []*relation.User) (err error) {
return u.sqlDB.Update(ctx, users)
}