[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 {
|
type SqlSystemStore struct {
|
||||||
*SqlStore
|
*SqlStore
|
||||||
|
|
||||||
|
systemSelectQuery sq.SelectBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
func newSqlSystemStore(sqlStore *SqlStore) store.SystemStore {
|
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 {
|
func (s SqlSystemStore) Save(system *model.System) error {
|
||||||
@@ -68,7 +72,8 @@ func (s SqlSystemStore) Get() (model.StringMap, error) {
|
|||||||
systems := []model.System{}
|
systems := []model.System{}
|
||||||
props := make(model.StringMap)
|
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")
|
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) {
|
func (s SqlSystemStore) GetByName(name string) (*model.System, error) {
|
||||||
var system model.System
|
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 {
|
if err == sql.ErrNoRows {
|
||||||
return nil, store.NewErrNotFound("System", fmt.Sprintf("name=%s", system.Name))
|
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)
|
defer finalizeTransactionX(tx, &err)
|
||||||
|
|
||||||
var origSystem model.System
|
var origSystem model.System
|
||||||
if err := tx.Get(&origSystem, `SELECT * FROM Systems
|
query := s.systemSelectQuery.Where(sq.Eq{"Name": system.Name})
|
||||||
WHERE Name = ?`, system.Name); err != nil && err != sql.ErrNoRows {
|
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)
|
return nil, errors.Wrapf(err, "failed to get system property with name=%s", system.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user