diff --git a/pkg/server/wire.go b/pkg/server/wire.go index f517128b7f1..2b241bf51ef 100644 --- a/pkg/server/wire.go +++ b/pkg/server/wire.go @@ -123,6 +123,7 @@ import ( "github.com/grafana/grafana/pkg/services/sqlstore/mockstore" "github.com/grafana/grafana/pkg/services/star/starimpl" "github.com/grafana/grafana/pkg/services/store" + "github.com/grafana/grafana/pkg/services/team/teamimpl" "github.com/grafana/grafana/pkg/services/teamguardian" teamguardianDatabase "github.com/grafana/grafana/pkg/services/teamguardian/database" teamguardianManager "github.com/grafana/grafana/pkg/services/teamguardian/manager" @@ -335,6 +336,7 @@ var wireBasicSet = wire.NewSet( publicdashboardsApi.ProvideApi, userimpl.ProvideService, orgimpl.ProvideService, + teamimpl.ProvideService, tempuserimpl.ProvideService, dashboardthumbsimpl.ProvideService, loginattemptimpl.ProvideService, diff --git a/pkg/services/team/team.go b/pkg/services/team/team.go new file mode 100644 index 00000000000..749b3ca082a --- /dev/null +++ b/pkg/services/team/team.go @@ -0,0 +1,23 @@ +package team + +import ( + "context" + + "github.com/grafana/grafana/pkg/models" +) + +type Service interface { + CreateTeam(name, email string, orgID int64) (models.Team, error) + UpdateTeam(ctx context.Context, cmd *models.UpdateTeamCommand) error + DeleteTeam(ctx context.Context, cmd *models.DeleteTeamCommand) error + SearchTeams(ctx context.Context, query *models.SearchTeamsQuery) error + GetTeamById(ctx context.Context, query *models.GetTeamByIdQuery) error + GetTeamsByUser(ctx context.Context, query *models.GetTeamsByUserQuery) error + AddTeamMember(userID, orgID, teamID int64, isExternal bool, permission models.PermissionType) error + UpdateTeamMember(ctx context.Context, cmd *models.UpdateTeamMemberCommand) error + IsTeamMember(orgId int64, teamId int64, userId int64) (bool, error) + RemoveTeamMember(ctx context.Context, cmd *models.RemoveTeamMemberCommand) error + GetUserTeamMemberships(ctx context.Context, orgID, userID int64, external bool) ([]*models.TeamMemberDTO, error) + GetTeamMembers(ctx context.Context, query *models.GetTeamMembersQuery) error + IsAdminOfTeams(ctx context.Context, query *models.IsAdminOfTeamsQuery) error +} diff --git a/pkg/services/team/teamimpl/team.go b/pkg/services/team/teamimpl/team.go new file mode 100644 index 00000000000..4c13732efb6 --- /dev/null +++ b/pkg/services/team/teamimpl/team.go @@ -0,0 +1,69 @@ +package teamimpl + +import ( + "context" + + "github.com/grafana/grafana/pkg/models" + "github.com/grafana/grafana/pkg/services/sqlstore" + "github.com/grafana/grafana/pkg/services/team" +) + +type Service struct { + store *sqlstore.SQLStore +} + +func ProvideService(sqlStore *sqlstore.SQLStore) team.Service { + return &Service{store: sqlStore} +} + +func (s *Service) CreateTeam(name, email string, orgID int64) (models.Team, error) { + return s.store.CreateTeam(name, email, orgID) +} + +func (s *Service) UpdateTeam(ctx context.Context, cmd *models.UpdateTeamCommand) error { + return s.store.UpdateTeam(ctx, cmd) +} + +func (s *Service) DeleteTeam(ctx context.Context, cmd *models.DeleteTeamCommand) error { + return s.store.DeleteTeam(ctx, cmd) +} + +func (s *Service) SearchTeams(ctx context.Context, query *models.SearchTeamsQuery) error { + return s.store.SearchTeams(ctx, query) +} + +func (s *Service) GetTeamById(ctx context.Context, query *models.GetTeamByIdQuery) error { + return s.store.GetTeamById(ctx, query) +} + +func (s *Service) GetTeamsByUser(ctx context.Context, query *models.GetTeamsByUserQuery) error { + return s.store.GetTeamsByUser(ctx, query) +} + +func (s *Service) AddTeamMember(userID, orgID, teamID int64, isExternal bool, permission models.PermissionType) error { + return s.store.AddTeamMember(userID, orgID, teamID, isExternal, permission) +} + +func (s *Service) UpdateTeamMember(ctx context.Context, cmd *models.UpdateTeamMemberCommand) error { + return s.store.UpdateTeamMember(ctx, cmd) +} + +func (s *Service) IsTeamMember(orgId int64, teamId int64, userId int64) (bool, error) { + return s.store.IsTeamMember(orgId, teamId, userId) +} + +func (s *Service) RemoveTeamMember(ctx context.Context, cmd *models.RemoveTeamMemberCommand) error { + return s.store.RemoveTeamMember(ctx, cmd) +} + +func (s *Service) GetUserTeamMemberships(ctx context.Context, orgID, userID int64, external bool) ([]*models.TeamMemberDTO, error) { + return s.store.GetUserTeamMemberships(ctx, orgID, userID, external) +} + +func (s *Service) GetTeamMembers(ctx context.Context, query *models.GetTeamMembersQuery) error { + return s.store.GetTeamMembers(ctx, query) +} + +func (s *Service) IsAdminOfTeams(ctx context.Context, query *models.IsAdminOfTeamsQuery) error { + return s.store.IsAdminOfTeams(ctx, query) +}