From 489ea1fdd62f2a78402dc63c9b228a569a352121 Mon Sep 17 00:00:00 2001 From: Jesse Hallam Date: Sat, 31 May 2025 06:23:42 -0300 Subject: [PATCH] Remove SELECT * from product notices store (#31246) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove SELECT * from product notices store Replace wildcard selects with explicit column names and use SelectBuilder pattern for consistency with other stores. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude * Update server/channels/store/sqlstore/product_notices_store.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Claude Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../store/sqlstore/product_notices_store.go | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/server/channels/store/sqlstore/product_notices_store.go b/server/channels/store/sqlstore/product_notices_store.go index c95263ac3fd..80fa6617222 100644 --- a/server/channels/store/sqlstore/product_notices_store.go +++ b/server/channels/store/sqlstore/product_notices_store.go @@ -15,10 +15,20 @@ import ( type SqlProductNoticesStore struct { *SqlStore + + selectQuery sq.SelectBuilder } func newSqlProductNoticesStore(sqlStore *SqlStore) store.ProductNoticesStore { - return &SqlProductNoticesStore{sqlStore} + s := &SqlProductNoticesStore{ + SqlStore: sqlStore, + } + + s.selectQuery = s.getQueryBuilder(). + Select("UserId", "NoticeId", "Viewed", "Timestamp"). + From("ProductNoticeViewState") + + return s } func (s SqlProductNoticesStore) Clear(notices []string) error { @@ -57,15 +67,10 @@ func (s SqlProductNoticesStore) View(userId string, notices []string) (err error defer finalizeTransactionX(transaction, &err) noticeStates := []model.ProductNoticeViewState{} - sql, args, err := s.getQueryBuilder(). - Select("*"). - From("ProductNoticeViewState"). - Where(sq.And{sq.Eq{"UserId": userId}, sq.Eq{"NoticeId": notices}}). - ToSql() - if err != nil { - return errors.Wrap(err, "View_ToSql") - } - if err := transaction.Select(¬iceStates, sql, args...); err != nil { + query := s.selectQuery. + Where(sq.Eq{"UserId": userId, "NoticeId": notices}) + + if err := transaction.SelectBuilder(¬iceStates, query); err != nil { return errors.Wrapf(err, "failed to get ProductNoticeViewState with userId=%s", userId) } @@ -115,11 +120,9 @@ func (s SqlProductNoticesStore) View(userId string, notices []string) (err error func (s SqlProductNoticesStore) GetViews(userId string) ([]model.ProductNoticeViewState, error) { noticeStates := []model.ProductNoticeViewState{} - sql, args, err := s.getQueryBuilder().Select("*").From("ProductNoticeViewState").Where(sq.Eq{"UserId": userId}).ToSql() - if err != nil { - return nil, errors.Wrap(err, "product_notice_view_state_tosql") - } - if err := s.GetReplica().Select(¬iceStates, sql, args...); err != nil { + query := s.selectQuery.Where(sq.Eq{"UserId": userId}) + + if err := s.GetReplica().SelectBuilder(¬iceStates, query); err != nil { return nil, errors.Wrapf(err, "failed to get ProductNoticeViewState with userId=%s", userId) } return noticeStates, nil