diff --git a/pkg/services/org/org.go b/pkg/services/org/org.go index e2cdadb4dd3..8234db2e2d0 100644 --- a/pkg/services/org/org.go +++ b/pkg/services/org/org.go @@ -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 diff --git a/pkg/services/org/orgimpl/org.go b/pkg/services/org/orgimpl/org.go index d17c54907ec..85a7e205757 100644 --- a/pkg/services/org/orgimpl/org.go +++ b/pkg/services/org/orgimpl/org.go @@ -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 diff --git a/pkg/services/org/orgimpl/org_test.go b/pkg/services/org/orgimpl/org_test.go index 8ce27b5929a..9d9b48c862c 100644 --- a/pkg/services/org/orgimpl/org_test.go +++ b/pkg/services/org/orgimpl/org_test.go @@ -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 } diff --git a/pkg/services/org/orgimpl/store.go b/pkg/services/org/orgimpl/store.go index c9580c566d6..3e1d4d94807 100644 --- a/pkg/services/org/orgimpl/store.go +++ b/pkg/services/org/orgimpl/store.go @@ -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 diff --git a/pkg/services/org/orgimpl/store_test.go b/pkg/services/org/orgimpl/store_test.go index 447b7105e8d..c8cb41f92ac 100644 --- a/pkg/services/org/orgimpl/store_test.go +++ b/pkg/services/org/orgimpl/store_test.go @@ -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) }) }) } diff --git a/pkg/services/org/orgtest/fake.go b/pkg/services/org/orgtest/fake.go index fc35f2fb220..3b238fc5db4 100644 --- a/pkg/services/org/orgtest/fake.go +++ b/pkg/services/org/orgtest/fake.go @@ -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 }