From 640960a87b23ebf1ea6b58ad517a72eb4c6b82d9 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 18 Jan 2023 10:59:25 +0800 Subject: [PATCH 1/2] db update --- pkg/common/db/model/group.go | 11 +++++++++-- pkg/common/db/mysql/group_model_k.go | 1 - 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/common/db/model/group.go b/pkg/common/db/model/group.go index 60f1cd88f..e1d03a14f 100644 --- a/pkg/common/db/model/group.go +++ b/pkg/common/db/model/group.go @@ -24,6 +24,15 @@ type GroupModel struct { cache *cache.GroupCache mongo *mongoDB.Client } +type DataBase 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) + DeleteTx(ctx context.Context, groupIDs []string) error +} +type Database struct { +} func NewGroupModel(db mysql.GroupModelInterface, rdb redis.UniversalClient, mdb *mongo.Client) *GroupModel { var groupModel GroupModel @@ -32,8 +41,6 @@ func NewGroupModel(db mysql.GroupModelInterface, rdb redis.UniversalClient, mdb DisableCacheRead: false, StrongConsistency: true, }) - sg := mdb.Database().Collection() - sg.Find() groupModel.mongo = mongoDB.NewMongoClient(mdb) return &groupModel } diff --git a/pkg/common/db/mysql/group_model_k.go b/pkg/common/db/mysql/group_model_k.go index 987ace740..7f7a626bf 100644 --- a/pkg/common/db/mysql/group_model_k.go +++ b/pkg/common/db/mysql/group_model_k.go @@ -16,7 +16,6 @@ type GroupModelInterface interface { 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) - DeleteTx(ctx context.Context, groupIDs []string) error //mongo } From 0d3984233b426ad6ad95760b8cf4971fcc5f6336 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 18 Jan 2023 11:18:05 +0800 Subject: [PATCH 2/2] db update --- pkg/common/db/model/group.go | 47 ++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/pkg/common/db/model/group.go b/pkg/common/db/model/group.go index e1d03a14f..0f765683e 100644 --- a/pkg/common/db/model/group.go +++ b/pkg/common/db/model/group.go @@ -5,7 +5,7 @@ import ( "Open_IM/pkg/common/db/mongoDB" "Open_IM/pkg/common/db/mysql" "context" - "github.com/dtm-labs/rockscache" + _ "github.com/dtm-labs/rockscache" "github.com/go-redis/redis/v8" "go.mongodb.org/mongo-driver/mongo" "gorm.io/gorm" @@ -19,8 +19,8 @@ type GroupInterface interface { Take(ctx context.Context, groupID string) (group *mysql.Group, err error) } -type GroupModel struct { - db mysql.GroupModelInterface +type GroupController struct { + db DataBase cache *cache.GroupCache mongo *mongoDB.Client } @@ -31,29 +31,40 @@ type DataBase interface { Take(ctx context.Context, groupID string) (group *mysql.Group, err error) DeleteTx(ctx context.Context, groupIDs []string) error } -type Database struct { +type MySqlDatabase struct { + mysql.GroupModelInterface } -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{ - DisableCacheRead: false, - StrongConsistency: true, - }) - groupModel.mongo = mongoDB.NewMongoClient(mdb) - return &groupModel +func (m *MySqlDatabase) Delete(ctx context.Context, groupIDs []string) error { + panic("implement me") +} + +func NewMySqlDatabase(db mysql.GroupModelInterface) DataBase { + return &MySqlDatabase{db} +} +func (m *MySqlDatabase) DeleteTx(ctx context.Context, groupIDs []string) error { + return nil +} + +func NewGroupController(groupModel mysql.GroupModelInterface, rdb redis.UniversalClient, mdb *mongo.Client) *GroupController { + return &GroupController{db: NewMySqlDatabase(groupModel)} + //groupModel.cache = cache.NewGroupCache(rdb, db, rockscache.Options{ + // DisableCacheRead: false, + // StrongConsistency: true, + //}) + //groupModel.mongo = mongoDB.NewMongoClient(mdb) + //return &groupModel } -func (g *GroupModel) Find(ctx context.Context, groupIDs []string) (groups []*mysql.Group, err error) { +func (g *GroupController) Find(ctx context.Context, groupIDs []string) (groups []*mysql.Group, err error) { return g.cache.GetGroupsInfoFromCache(ctx, groupIDs) } -func (g *GroupModel) Create(ctx context.Context, groups []*mysql.Group) error { +func (g *GroupController) Create(ctx context.Context, groups []*mysql.Group) error { return g.db.Create(ctx, groups) } -func (g *GroupModel) Delete(ctx context.Context, groupIDs []string) error { +func (g *GroupController) Delete(ctx context.Context, groupIDs []string) error { err := g.db.DB.Transaction(func(tx *gorm.DB) error { if err := g.db.Delete(ctx, groupIDs, tx); err != nil { return err @@ -66,11 +77,11 @@ func (g *GroupModel) Delete(ctx context.Context, groupIDs []string) error { return err } -func (g *GroupModel) Take(ctx context.Context, groupID string) (group *mysql.Group, err error) { +func (g *GroupController) Take(ctx context.Context, groupID string) (group *mysql.Group, err error) { return g.cache.GetGroupInfoFromCache(ctx, groupID) } -func (g *GroupModel) Update(ctx context.Context, groups []*mysql.Group) error { +func (g *GroupController) Update(ctx context.Context, groups []*mysql.Group) error { err := g.db.DB.Transaction(func(tx *gorm.DB) error { if err := g.db.Update(ctx, groups, tx); err != nil { return err