diff --git a/server/channels/store/sqlstore/scheme_store.go b/server/channels/store/sqlstore/scheme_store.go index 75c864c046..c44b946d65 100644 --- a/server/channels/store/sqlstore/scheme_store.go +++ b/server/channels/store/sqlstore/scheme_store.go @@ -32,10 +32,26 @@ const ( type SqlSchemeStore struct { *SqlStore + schemeSelectQuery sq.SelectBuilder } func newSqlSchemeStore(sqlStore *SqlStore) store.SchemeStore { - return &SqlSchemeStore{sqlStore} + s := &SqlSchemeStore{ + SqlStore: sqlStore, + } + + s.schemeSelectQuery = s.getQueryBuilder(). + Select( + "Id", "Name", "DisplayName", "Description", "Scope", + "DefaultTeamAdminRole", "DefaultTeamUserRole", "DefaultTeamGuestRole", + "DefaultChannelAdminRole", "DefaultChannelUserRole", "DefaultChannelGuestRole", + "CreateAt", "UpdateAt", "DeleteAt", + "DefaultPlaybookAdminRole", "DefaultPlaybookMemberRole", + "DefaultRunAdminRole", "DefaultRunMemberRole", + ). + From("Schemes") + + return s } func (s *SqlSchemeStore) Save(scheme *model.Scheme) (_ *model.Scheme, err error) { @@ -68,7 +84,6 @@ func (s *SqlSchemeStore) Save(scheme *model.Scheme) (_ *model.Scheme, err error) DefaultChannelAdminRole=:DefaultChannelAdminRole, DefaultChannelUserRole=:DefaultChannelUserRole, DefaultChannelGuestRole=:DefaultChannelGuestRole, DefaultPlaybookMemberRole=:DefaultPlaybookMemberRole, DefaultPlaybookAdminRole=:DefaultPlaybookAdminRole, DefaultRunMemberRole=:DefaultRunMemberRole, DefaultRunAdminRole=:DefaultRunAdminRole WHERE Id=:Id`, scheme) - if err != nil { return nil, errors.Wrap(err, "failed to update Scheme") } @@ -299,33 +314,32 @@ func filterModerated(permissions []string) []string { func (s *SqlSchemeStore) Get(schemeId string) (*model.Scheme, error) { var scheme model.Scheme - if err := s.GetReplica().Get(&scheme, "SELECT * from Schemes WHERE Id = ?", schemeId); err != nil { + query := s.schemeSelectQuery.Where(sq.Eq{"Id": schemeId}) + if err := s.GetReplica().GetBuilder(&scheme, query); err != nil { if err == sql.ErrNoRows { return nil, store.NewErrNotFound("Scheme", fmt.Sprintf("schemeId=%s", schemeId)) } return nil, errors.Wrapf(err, "failed to get Scheme with schemeId=%s", schemeId) } - return &scheme, nil } func (s *SqlSchemeStore) GetByName(schemeName string) (*model.Scheme, error) { var scheme model.Scheme - - if err := s.GetReplica().Get(&scheme, "SELECT * from Schemes WHERE Name = ?", schemeName); err != nil { + query := s.schemeSelectQuery.Where(sq.Eq{"Name": schemeName}) + if err := s.GetReplica().GetBuilder(&scheme, query); err != nil { if err == sql.ErrNoRows { return nil, store.NewErrNotFound("Scheme", fmt.Sprintf("schemeName=%s", schemeName)) } return nil, errors.Wrapf(err, "failed to get Scheme with schemeName=%s", schemeName) } - return &scheme, nil } func (s *SqlSchemeStore) Delete(schemeId string) (*model.Scheme, error) { - // Get the scheme scheme := model.Scheme{} - if err := s.GetMaster().Get(&scheme, `SELECT * from Schemes WHERE Id = ?`, schemeId); err != nil { + query := s.schemeSelectQuery.Where(sq.Eq{"Id": schemeId}) + if err := s.GetMaster().GetBuilder(&scheme, query); err != nil { if err == sql.ErrNoRows { return nil, store.NewErrNotFound("Scheme", fmt.Sprintf("schemeId=%s", schemeId)) } @@ -369,7 +383,6 @@ func (s *SqlSchemeStore) Delete(schemeId string) (*model.Scheme, error) { Set("UpdateAt", time). Set("DeleteAt", time). ToSql() - if err != nil { return nil, errors.Wrap(err, "status_tosql") } @@ -387,13 +400,11 @@ func (s *SqlSchemeStore) Delete(schemeId string) (*model.Scheme, error) { DefaultTeamAdminRole=:DefaultTeamAdminRole, DefaultTeamUserRole=:DefaultTeamUserRole, DefaultTeamGuestRole=:DefaultTeamGuestRole, DefaultChannelAdminRole=:DefaultChannelAdminRole, DefaultChannelUserRole=:DefaultChannelUserRole, DefaultChannelGuestRole=:DefaultChannelGuestRole WHERE Id=:Id`, &scheme) - if err != nil { return nil, errors.Wrapf(err, "failed to update Scheme with schemeId=%s", schemeId) } rowsChanged, err := res.RowsAffected() - if err != nil { return nil, errors.Wrapf(err, "failed to get RowsAffected while updating scheme with schemeId=%s", schemeId) } @@ -441,7 +452,6 @@ func (s *SqlSchemeStore) PermanentDeleteAll() error { func (s *SqlSchemeStore) CountByScope(scope string) (int64, error) { var count int64 err := s.GetReplica().Get(&count, `SELECT count(*) FROM Schemes WHERE Scope = ? AND DeleteAt = 0`, scope) - if err != nil { return 0, errors.Wrap(err, "failed to count Schemes by scope") }