From 9d10199e5fca6a930673179f0aa537752f1408f1 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Tue, 15 Mar 2022 11:14:33 +0530 Subject: [PATCH] Removing remaining instances of GetReplica/GetMaster (#19773) ```release-note NONE ``` --- store/sqlstore/channel_store_categories.go | 4 +- store/sqlstore/post_store.go | 52 +++++++++++----------- store/sqlstore/sqlx_wrapper.go | 4 ++ store/sqlstore/store.go | 5 ++- store/sqlstore/user_store.go | 4 +- 5 files changed, 38 insertions(+), 31 deletions(-) diff --git a/store/sqlstore/channel_store_categories.go b/store/sqlstore/channel_store_categories.go index 1f31de5e3e..94f0fea0a2 100644 --- a/store/sqlstore/channel_store_categories.go +++ b/store/sqlstore/channel_store_categories.go @@ -435,7 +435,6 @@ func (s SqlChannelStore) completePopulatingCategoryChannelsT(db dbSelecter, cate } func (s SqlChannelStore) GetSidebarCategory(categoryId string) (*model.SidebarCategoryWithChannels, error) { - var categories []*sidebarCategoryForJoin sql, args, err := s.getQueryBuilder(). Select("SidebarCategories.*", "SidebarChannels.ChannelId"). From("SidebarCategories"). @@ -446,7 +445,8 @@ func (s SqlChannelStore) GetSidebarCategory(categoryId string) (*model.SidebarCa return nil, errors.Wrap(err, "sidebar_category_tosql") } - if _, err = s.GetReplica().Select(&categories, sql, args...); err != nil { + categories := []*sidebarCategoryForJoin{} + if err = s.GetReplicaX().Select(&categories, sql, args...); err != nil { return nil, store.NewErrNotFound("SidebarCategories", categoryId) } diff --git a/store/sqlstore/post_store.go b/store/sqlstore/post_store.go index 85e3cecdc2..aaeea5246d 100644 --- a/store/sqlstore/post_store.go +++ b/store/sqlstore/post_store.go @@ -1498,34 +1498,36 @@ func (s *SqlPostStore) getParentsPosts(channelId string, offset int, limit int, if len(roots) == 0 { return nil, nil } - // TODO: convert to squirrel HW - params := make(map[string]interface{}) - placeholders := make([]string, len(roots)) - for idx, r := range roots { - key := fmt.Sprintf(":Root%v", idx) - params[key[1:]] = r - placeholders[idx] = key - } - placeholderString := strings.Join(placeholders, ", ") - params["ChannelId"] = channelId - replyCountQuery := "" - whereStatement := "p.Id IN (" + placeholderString + ")" + + cols := []string{"p.*"} + var where sq.Sqlizer + where = sq.Eq{"p.Id": roots} if skipFetchThreads { - replyCountQuery = `, (SELECT COUNT(*) FROM Posts WHERE Posts.RootId = (CASE WHEN p.RootId = '' THEN p.Id ELSE p.RootId END) AND Posts.DeleteAt = 0) as ReplyCount` + cols = append(cols, "(SELECT COUNT(*) FROM Posts WHERE Posts.RootId = (CASE WHEN p.RootId = '' THEN p.Id ELSE p.RootId END) AND Posts.DeleteAt = 0) as ReplyCount") } else { - whereStatement += " OR p.RootId IN (" + placeholderString + ")" + where = sq.Or{ + where, + sq.Eq{"p.RootId": roots}, + } } - var posts []*model.Post - _, err = s.GetReplica().Select(&posts, ` - SELECT p.*`+replyCountQuery+` - FROM - Posts p - WHERE - (`+whereStatement+`) - AND ChannelId = :ChannelId - AND DeleteAt = 0 - ORDER BY CreateAt`, - params) + + query := s.getQueryBuilder(). + Select(cols...). + From("Posts p"). + Where(sq.And{ + where, + sq.Eq{"ChannelId": channelId}, + sq.Eq{"DeleteAt": 0}, + }). + OrderBy("CreateAt") + + sql, args, err := query.ToSql() + if err != nil { + return nil, errors.Wrap(err, "ParentPosts_Tosql") + } + + posts := []*model.Post{} + err = s.GetReplicaX().Select(&posts, sql, args...) if err != nil { return nil, errors.Wrap(err, "failed to find Posts") } diff --git a/store/sqlstore/sqlx_wrapper.go b/store/sqlstore/sqlx_wrapper.go index c2d666ab24..6bf8973d1c 100644 --- a/store/sqlstore/sqlx_wrapper.go +++ b/store/sqlstore/sqlx_wrapper.go @@ -74,6 +74,10 @@ func newSqlxDBWrapper(db *sqlx.DB, timeout time.Duration, trace bool) *sqlxDBWra } } +func (w *sqlxDBWrapper) Stats() sql.DBStats { + return w.DB.Stats() +} + func (w *sqlxDBWrapper) Beginx() (*sqlxTxWrapper, error) { tx, err := w.DB.Beginx() if err != nil { diff --git a/store/sqlstore/store.go b/store/sqlstore/store.go index 81e6579606..3bef2e0350 100644 --- a/store/sqlstore/store.go +++ b/store/sqlstore/store.go @@ -376,7 +376,8 @@ func (ss *SqlStore) GetDbVersion(numerical bool) (string, error) { return "", errors.New("Not supported driver") } - version, err := ss.GetReplica().SelectStr(sqlVersion) + var version string + err := ss.GetReplicaX().Get(&version, sqlVersion) if err != nil { return "", err } @@ -459,7 +460,7 @@ func (ss *SqlStore) GetReplicaX() *sqlxDBWrapper { } func (ss *SqlStore) TotalMasterDbConnections() int { - return ss.GetMaster().Db.Stats().OpenConnections + return ss.GetMasterX().Stats().OpenConnections } // ReplicaLagAbs queries all the replica databases to get the absolute replica lag value diff --git a/store/sqlstore/user_store.go b/store/sqlstore/user_store.go index 46a444c070..5e3a9bdaa7 100644 --- a/store/sqlstore/user_store.go +++ b/store/sqlstore/user_store.go @@ -2074,8 +2074,8 @@ func (us SqlUserStore) GetUsersWithInvalidEmails(page int, perPage int, restrict return nil, errors.Wrap(err, "users_get_many_tosql") } - var users []*model.User - if _, err := us.GetReplica().Select(&users, queryString, args...); err != nil { + users := []*model.User{} + if err := us.GetReplicaX().Select(&users, queryString, args...); err != nil { return nil, errors.Wrap(err, "users_get_many_select") }