[MM-62145] Migrating SELECT * queries for system_store.go (#29821)
* Step 1: Migrate any SELECT * queries written as strings into builder queries. * Step 2: Migrate any instances of SELECT * into explicitly enumerating the needed columns * revert `GetByName` to read from master as opposed to master. --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
@@ -16,10 +16,14 @@ import (
|
||||
|
||||
type SqlSystemStore struct {
|
||||
*SqlStore
|
||||
|
||||
systemSelectQuery sq.SelectBuilder
|
||||
}
|
||||
|
||||
func newSqlSystemStore(sqlStore *SqlStore) store.SystemStore {
|
||||
return &SqlSystemStore{sqlStore}
|
||||
s := SqlSystemStore{SqlStore: sqlStore}
|
||||
s.systemSelectQuery = s.getQueryBuilder().Select("Name", "Value").From("Systems")
|
||||
return &s
|
||||
}
|
||||
|
||||
func (s SqlSystemStore) Save(system *model.System) error {
|
||||
@@ -68,7 +72,8 @@ func (s SqlSystemStore) Get() (model.StringMap, error) {
|
||||
systems := []model.System{}
|
||||
props := make(model.StringMap)
|
||||
|
||||
if err := s.GetReplica().Select(&systems, "SELECT * FROM Systems"); err != nil {
|
||||
query := s.systemSelectQuery
|
||||
if err := s.GetReplica().SelectBuilder(&systems, query); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to get System list")
|
||||
}
|
||||
|
||||
@@ -81,7 +86,8 @@ func (s SqlSystemStore) Get() (model.StringMap, error) {
|
||||
|
||||
func (s SqlSystemStore) GetByName(name string) (*model.System, error) {
|
||||
var system model.System
|
||||
if err := s.GetMaster().Get(&system, "SELECT * FROM Systems WHERE Name = ?", name); err != nil {
|
||||
query := s.systemSelectQuery.Where(sq.Eq{"Name": name})
|
||||
if err := s.GetMaster().GetBuilder(&system, query); err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, store.NewErrNotFound("System", fmt.Sprintf("name=%s", system.Name))
|
||||
}
|
||||
@@ -112,8 +118,8 @@ func (s SqlSystemStore) InsertIfExists(system *model.System) (_ *model.System, e
|
||||
defer finalizeTransactionX(tx, &err)
|
||||
|
||||
var origSystem model.System
|
||||
if err := tx.Get(&origSystem, `SELECT * FROM Systems
|
||||
WHERE Name = ?`, system.Name); err != nil && err != sql.ErrNoRows {
|
||||
query := s.systemSelectQuery.Where(sq.Eq{"Name": system.Name})
|
||||
if err := tx.GetBuilder(&origSystem, query); err != nil && err != sql.ErrNoRows {
|
||||
return nil, errors.Wrapf(err, "failed to get system property with name=%s", system.Name)
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user