mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
53 lines
1.6 KiB
Go
53 lines
1.6 KiB
Go
|
package retriever
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"github.com/grafana/grafana/pkg/infra/db"
|
||
|
"github.com/grafana/grafana/pkg/infra/kvstore"
|
||
|
"github.com/grafana/grafana/pkg/infra/log"
|
||
|
"github.com/grafana/grafana/pkg/services/apikey"
|
||
|
"github.com/grafana/grafana/pkg/services/org"
|
||
|
"github.com/grafana/grafana/pkg/services/serviceaccounts"
|
||
|
"github.com/grafana/grafana/pkg/services/serviceaccounts/database"
|
||
|
"github.com/grafana/grafana/pkg/services/user"
|
||
|
)
|
||
|
|
||
|
// ServiceAccountRetriever is the service that retrieves service accounts.
|
||
|
// At the time of writing, this service is only used by the service accounts permissions service
|
||
|
// to avoid cyclic dependency between the ServiceAccountService and the ServiceAccountPermissionsService
|
||
|
type ServiceAccountRetriever interface {
|
||
|
RetrieveServiceAccount(ctx context.Context, orgID, serviceAccountID int64) (*serviceaccounts.ServiceAccountProfileDTO, error)
|
||
|
}
|
||
|
|
||
|
// ServiceAccountRetriever is the service that manages service accounts.
|
||
|
type Service struct {
|
||
|
store *database.ServiceAccountsStoreImpl
|
||
|
logger log.Logger
|
||
|
}
|
||
|
|
||
|
func ProvideService(
|
||
|
store db.DB,
|
||
|
apiKeyService apikey.Service,
|
||
|
kvStore kvstore.KVStore,
|
||
|
userService user.Service,
|
||
|
orgService org.Service,
|
||
|
) *Service {
|
||
|
serviceAccountsStore := database.ProvideServiceAccountsStore(
|
||
|
nil,
|
||
|
store,
|
||
|
apiKeyService,
|
||
|
kvStore,
|
||
|
userService,
|
||
|
orgService,
|
||
|
)
|
||
|
return &Service{
|
||
|
store: serviceAccountsStore,
|
||
|
logger: log.New("serviceaccountretriever"),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (s *Service) RetrieveServiceAccount(ctx context.Context, orgID, serviceAccountID int64) (*serviceaccounts.ServiceAccountProfileDTO, error) {
|
||
|
return s.store.RetrieveServiceAccount(ctx, orgID, serviceAccountID)
|
||
|
}
|