diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index a8c2d90df..2bdb3ea56 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -41,6 +41,8 @@ type groupServer struct { rpcRegisterName string etcdSchema string etcdAddr []string + imdb.GroupInterface + } func NewGroupServer(port int) *groupServer { diff --git a/pkg/common/db/cache/group.go b/pkg/common/db/cache/group.go index 06c3256fc..04f4837b4 100644 --- a/pkg/common/db/cache/group.go +++ b/pkg/common/db/cache/group.go @@ -15,13 +15,13 @@ const GroupExpireTime = time.Second * 60 * 60 * 12 const groupInfoCacheKey = "GROUP_INFO_CACHE:" type GroupCache struct { - db *mysql.Group + db mysql.GroupModelInterface expireTime time.Duration redisClient *RedisClient rcClient *rockscache.Client } -func NewGroupCache(rdb redis.UniversalClient, db *mysql.Group, opts rockscache.Options) *GroupCache { +func NewGroupCache(rdb redis.UniversalClient, db mysql.GroupModelInterface, opts rockscache.Options) *GroupCache { rcClient := &rockscache.Client{ Options: rockscache.Options{}, } diff --git a/pkg/common/db/model/group.go b/pkg/common/db/model/group.go index 3cdcc7d97..c1c2a1d69 100644 --- a/pkg/common/db/model/group.go +++ b/pkg/common/db/model/group.go @@ -4,7 +4,6 @@ import ( "Open_IM/pkg/common/db/cache" "Open_IM/pkg/common/db/mongoDB" "Open_IM/pkg/common/db/mysql" - "Open_IM/pkg/utils" "context" "github.com/dtm-labs/rockscache" "github.com/go-redis/redis/v8" @@ -13,13 +12,20 @@ import ( //"time" ) +type GroupInterface interface { + Find(ctx context.Context, groupIDs []string) (groups []*mysql.Group, err error) + Create(ctx context.Context, groups []*mysql.Group) error + Delete(ctx context.Context, groupIDs []string) error + Take(ctx context.Context, groupID string) (group *mysql.Group, err error) +} + type GroupModel struct { - db *mysql.Group + db mysql.GroupModelInterface cache *cache.GroupCache mongo *mongoDB.Client } -func NewGroupModel(db *mysql.Group, rdb redis.UniversalClient, mdb *mongo.Client) *GroupModel { +func NewGroupModel(db mysql.GroupModelInterface, rdb redis.UniversalClient, mdb *mongo.Client) *GroupModel { var groupModel GroupModel groupModel.db = db groupModel.cache = cache.NewGroupCache(rdb, db, rockscache.Options{ diff --git a/pkg/common/db/mysql/group_model_k.go b/pkg/common/db/mysql/group_model_k.go index 86bc49095..6b595136b 100644 --- a/pkg/common/db/mysql/group_model_k.go +++ b/pkg/common/db/mysql/group_model_k.go @@ -8,6 +8,14 @@ import ( "time" ) +type GroupModelInterface interface { + Create(ctx context.Context, groups []*Group) (err error) + Delete(ctx context.Context, groupIDs []string, tx ...*gorm.DB) (err error) + UpdateByMap(ctx context.Context, groupID string, args map[string]interface{}) (err error) + Update(ctx context.Context, groups []*Group) (err error) + Find(ctx context.Context, groupIDs []string) (groups []*Group, err error) + Take(ctx context.Context, groupID string) (group *Group, err error) +} type Group struct { GroupID string `gorm:"column:group_id;primary_key;size:64" json:"groupID" binding:"required"` GroupName string `gorm:"column:name;size:255" json:"groupName"`