avoid SELECT * in link metadata store (#30833)

* avoid SELECT * in link metadata store

* Address PR comment: define column names once and reuse
This commit is contained in:
Jesse Hallam 2025-04-22 16:29:09 -03:00 committed by GitHub
parent 701ddc896a
commit eb8aaba1bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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 {