Chore: Copy org sqlstore methods to org store (#55825)

* Chore: Copy org sqlstore methods to org store

* Remove GetByName, add some tests

* Rename GetByNameHandler to GetByName

* Fix fake name
This commit is contained in:
idafurjes 2022-09-27 16:53:45 +02:00 committed by GitHub
parent 527c00dae5
commit edcf359473
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 73 additions and 72 deletions

View File

@ -12,8 +12,7 @@ type Service interface {
UpdateOrg(context.Context, *UpdateOrgCommand) error
Search(context.Context, *SearchOrgsQuery) ([]*OrgDTO, error)
GetByID(context.Context, *GetOrgByIdQuery) (*Org, error)
GetByNameHandler(context.Context, *GetOrgByNameQuery) (*Org, error)
GetByName(string) (*Org, error)
GetByName(context.Context, *GetOrgByNameQuery) (*Org, error)
CreateWithMember(context.Context, *CreateOrgCommand) (*Org, error)
UpdateAddress(context.Context, *UpdateOrgAddressCommand) error
Delete(context.Context, *DeleteOrgCommand) error

View File

@ -6,7 +6,6 @@ import (
"time"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/org"
"github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/grafana/grafana/pkg/setting"
@ -103,69 +102,12 @@ func (s *Service) Search(ctx context.Context, query *org.SearchOrgsQuery) ([]*or
return s.store.Search(ctx, query)
}
// TODO: remove wrapper around sqlstore
func (s *Service) GetByID(ctx context.Context, query *org.GetOrgByIdQuery) (*org.Org, error) {
q := &models.GetOrgByIdQuery{Id: query.ID}
err := s.sqlStore.GetOrgById(ctx, q)
if err != nil {
return nil, err
}
return &org.Org{
ID: q.Result.Id,
Version: q.Result.Version,
Name: q.Result.Name,
Address1: q.Result.Address1,
Address2: q.Result.Address2,
City: q.Result.City,
ZipCode: q.Result.ZipCode,
State: q.Result.State,
Country: q.Result.Country,
Created: q.Result.Created,
Updated: q.Result.Updated,
}, nil
return s.store.GetByID(ctx, query)
}
// TODO: remove wrapper around sqlstore
func (s *Service) GetByNameHandler(ctx context.Context, query *org.GetOrgByNameQuery) (*org.Org, error) {
q := &models.GetOrgByNameQuery{Name: query.Name}
err := s.sqlStore.GetOrgByNameHandler(ctx, q)
if err != nil {
return nil, err
}
return &org.Org{
ID: q.Result.Id,
Version: q.Result.Version,
Name: q.Result.Name,
Address1: q.Result.Address1,
Address2: q.Result.Address2,
City: q.Result.City,
ZipCode: q.Result.ZipCode,
State: q.Result.State,
Country: q.Result.Country,
Created: q.Result.Created,
Updated: q.Result.Updated,
}, nil
}
// TODO: remove wrapper around sqlstore
func (s *Service) GetByName(name string) (*org.Org, error) {
orga, err := s.sqlStore.GetOrgByName(name)
if err != nil {
return nil, err
}
return &org.Org{
ID: orga.Id,
Version: orga.Version,
Name: orga.Name,
Address1: orga.Address1,
Address2: orga.Address2,
City: orga.City,
ZipCode: orga.ZipCode,
State: orga.State,
Country: orga.Country,
Created: orga.Created,
Updated: orga.Updated,
}, nil
func (s *Service) GetByName(ctx context.Context, query *org.GetOrgByNameQuery) (*org.Org, error) {
return s.store.GetByName(ctx, query)
}
// TODO: refactor service to call store CRUD method

View File

@ -120,6 +120,14 @@ func (f *FakeOrgStore) GetOrgUsers(ctx context.Context, query *org.GetOrgUsersQu
return f.ExpectedOrgUsers, f.ExpectedError
}
func (f *FakeOrgStore) GetByID(ctx context.Context, query *org.GetOrgByIdQuery) (*org.Org, error) {
return f.ExpectedOrg, f.ExpectedError
}
func (f *FakeOrgStore) GetByName(ctx context.Context, query *org.GetOrgByNameQuery) (*org.Org, error) {
return f.ExpectedOrg, f.ExpectedError
}
func (f *FakeOrgStore) SearchOrgUsers(ctx context.Context, query *org.SearchOrgUsersQuery) (*org.SearchOrgUsersQueryResult, error) {
return f.ExpectedSearchOrgUsersQueryResult, f.ExpectedError
}

View File

@ -39,6 +39,8 @@ type store interface {
AddOrgUser(context.Context, *org.AddOrgUserCommand) error
UpdateOrgUser(context.Context, *org.UpdateOrgUserCommand) error
GetOrgUsers(context.Context, *org.GetOrgUsersQuery) ([]*org.OrgUserDTO, error)
GetByID(context.Context, *org.GetOrgByIdQuery) (*org.Org, error)
GetByName(context.Context, *org.GetOrgByNameQuery) (*org.Org, error)
SearchOrgUsers(context.Context, *org.SearchOrgUsersQuery) (*org.SearchOrgUsersQueryResult, error)
RemoveOrgUser(context.Context, *org.RemoveOrgUserCommand) error
}
@ -518,6 +520,25 @@ func (ss *sqlStore) GetOrgUsers(ctx context.Context, query *org.GetOrgUsersQuery
return result, nil
}
func (ss *sqlStore) GetByID(ctx context.Context, query *org.GetOrgByIdQuery) (*org.Org, error) {
var orga org.Org
err := ss.db.WithDbSession(ctx, func(dbSession *sqlstore.DBSession) error {
exists, err := dbSession.ID(query.ID).Get(&orga)
if err != nil {
return err
}
if !exists {
return models.ErrOrgNotFound
}
return nil
})
if err != nil {
return nil, err
}
return &orga, nil
}
func (ss *sqlStore) SearchOrgUsers(ctx context.Context, query *org.SearchOrgUsersQuery) (*org.SearchOrgUsersQueryResult, error) {
result := org.SearchOrgUsersQueryResult{
OrgUsers: make([]*org.OrgUserDTO, 0),
@ -600,6 +621,25 @@ func (ss *sqlStore) SearchOrgUsers(ctx context.Context, query *org.SearchOrgUser
return &result, nil
}
func (ss *sqlStore) GetByName(ctx context.Context, query *org.GetOrgByNameQuery) (*org.Org, error) {
var orga org.Org
err := ss.db.WithDbSession(ctx, func(dbSession *sqlstore.DBSession) error {
exists, err := dbSession.Where("name=?", query.Name).Get(&orga)
if err != nil {
return err
}
if !exists {
return models.ErrOrgNotFound
}
return nil
})
if err != nil {
return nil, err
}
return &orga, nil
}
func (ss *sqlStore) RemoveOrgUser(ctx context.Context, cmd *org.RemoveOrgUserCommand) error {
return ss.db.WithTransactionalDbSession(ctx, func(sess *sqlstore.DBSession) error {
// check if user exists

View File

@ -119,7 +119,7 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
query := &org.SearchOrgsQuery{IDs: ids}
result, err := orgStore.Search(context.Background(), query)
require.NoError(t, err)
require.Equal(t, len(result), 3)
assert.Equal(t, 3, len(result))
})
t.Run("Given we have organizations, we can limit and paginate search", func(t *testing.T) {
@ -135,7 +135,7 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
result, err := orgStore.Search(context.Background(), query)
require.NoError(t, err)
require.Equal(t, len(result), 3)
assert.Equal(t, 3, len(result))
})
t.Run("Should be able to limit search", func(t *testing.T) {
@ -143,7 +143,7 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
result, err := orgStore.Search(context.Background(), query)
require.NoError(t, err)
require.Equal(t, len(result), 1)
assert.Equal(t, 1, len(result))
})
t.Run("Should be able to limit and paginate search", func(t *testing.T) {
@ -151,7 +151,23 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
result, err := orgStore.Search(context.Background(), query)
require.NoError(t, err)
require.Equal(t, len(result), 1)
assert.Equal(t, 1, len(result))
})
t.Run("Get org by ID", func(t *testing.T) {
query := &org.GetOrgByIdQuery{ID: 1}
result, err := orgStore.GetByID(context.Background(), query)
require.NoError(t, err)
assert.Equal(t, "Orga #1", result.Name)
})
t.Run("Get org by handler name", func(t *testing.T) {
query := &org.GetOrgByNameQuery{Name: "Orga #1"}
result, err := orgStore.GetByName(context.Background(), query)
require.NoError(t, err)
assert.Equal(t, int64(1), result.ID)
})
})
}

View File

@ -52,11 +52,7 @@ func (f *FakeOrgService) GetByID(ctx context.Context, query *org.GetOrgByIdQuery
return f.ExpectedOrg, f.ExpectedError
}
func (f *FakeOrgService) GetByNameHandler(ctx context.Context, query *org.GetOrgByNameQuery) (*org.Org, error) {
return f.ExpectedOrg, f.ExpectedError
}
func (f *FakeOrgService) GetByName(name string) (*org.Org, error) {
func (f *FakeOrgService) GetByName(ctx context.Context, query *org.GetOrgByNameQuery) (*org.Org, error) {
return f.ExpectedOrg, f.ExpectedError
}