From eb8aaba1bff01fe5be09e52d4db74acd4715e63a Mon Sep 17 00:00:00 2001 From: Jesse Hallam Date: Tue, 22 Apr 2025 16:29:09 -0300 Subject: [PATCH] avoid SELECT * in link metadata store (#30833) * avoid SELECT * in link metadata store * Address PR comment: define column names once and reuse --- .../store/sqlstore/link_metadata_store.go | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/server/channels/store/sqlstore/link_metadata_store.go b/server/channels/store/sqlstore/link_metadata_store.go index 3967d55e46a..01abd2f499b 100644 --- a/server/channels/store/sqlstore/link_metadata_store.go +++ b/server/channels/store/sqlstore/link_metadata_store.go @@ -16,10 +16,28 @@ import ( type SqlLinkMetadataStore struct { *SqlStore + + linkMetadataColumns []string + linkMetadataQuery sq.SelectBuilder } func newSqlLinkMetadataStore(sqlStore *SqlStore) store.LinkMetadataStore { - return &SqlLinkMetadataStore{sqlStore} + s := &SqlLinkMetadataStore{ + SqlStore: sqlStore, + linkMetadataColumns: []string{ + "Hash", + "URL", + "Timestamp", + "Type", + "Data", + }, + } + + s.linkMetadataQuery = s.getQueryBuilder(). + Select(s.linkMetadataColumns...). + From("LinkMetadata") + + return s } func (s SqlLinkMetadataStore) Save(metadata *model.LinkMetadata) (*model.LinkMetadata, error) { @@ -38,7 +56,7 @@ func (s SqlLinkMetadataStore) Save(metadata *model.LinkMetadata) (*model.LinkMet query := s.getQueryBuilder(). Insert("LinkMetadata"). - Columns("Hash", "URL", "Timestamp", "Type", "Data"). + Columns(s.linkMetadataColumns...). Values(metadata.Hash, metadata.URL, metadata.Timestamp, metadata.Type, metadataBytes) if s.DriverName() == model.DatabaseDriverMysql { @@ -62,9 +80,7 @@ func (s SqlLinkMetadataStore) Save(metadata *model.LinkMetadata) (*model.LinkMet func (s SqlLinkMetadataStore) Get(url string, timestamp int64) (*model.LinkMetadata, error) { var metadata model.LinkMetadata - query, args, err := s.getQueryBuilder(). - Select("*"). - From("LinkMetadata"). + query, args, err := s.linkMetadataQuery. Where(sq.Eq{"URL": url, "Timestamp": timestamp}). ToSql() if err != nil {