avoid SELECT * in link metadata store (#30833)

* avoid SELECT * in link metadata store

* Address PR comment: define column names once and reuse
Этот коммит содержится в:
Jesse Hallam
2025-04-22 16:29:09 -03:00
коммит произвёл GitHub
родитель 701ddc896a
Коммит eb8aaba1bf

Просмотреть файл

@@ -16,10 +16,28 @@ import (
type SqlLinkMetadataStore struct { type SqlLinkMetadataStore struct {
*SqlStore *SqlStore
linkMetadataColumns []string
linkMetadataQuery sq.SelectBuilder
} }
func newSqlLinkMetadataStore(sqlStore *SqlStore) store.LinkMetadataStore { 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) { 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(). query := s.getQueryBuilder().
Insert("LinkMetadata"). Insert("LinkMetadata").
Columns("Hash", "URL", "Timestamp", "Type", "Data"). Columns(s.linkMetadataColumns...).
Values(metadata.Hash, metadata.URL, metadata.Timestamp, metadata.Type, metadataBytes) Values(metadata.Hash, metadata.URL, metadata.Timestamp, metadata.Type, metadataBytes)
if s.DriverName() == model.DatabaseDriverMysql { 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) { func (s SqlLinkMetadataStore) Get(url string, timestamp int64) (*model.LinkMetadata, error) {
var metadata model.LinkMetadata var metadata model.LinkMetadata
query, args, err := s.getQueryBuilder(). query, args, err := s.linkMetadataQuery.
Select("*").
From("LinkMetadata").
Where(sq.Eq{"URL": url, "Timestamp": timestamp}). Where(sq.Eq{"URL": url, "Timestamp": timestamp}).
ToSql() ToSql()
if err != nil { if err != nil {