Files
paralus/pkg/service/namespace.go
2022-06-08 18:41:32 +05:30

57 lines
1.6 KiB
Go

package service
import (
"context"
"github.com/google/uuid"
"github.com/paralus/paralus/internal/dao"
"github.com/paralus/paralus/pkg/utils"
"github.com/uptrace/bun"
)
// NamespaceService is the interface for namespace operations
type NamespaceService interface {
// GetProjectNamespaces
GetProjectNamespaces(ctx context.Context, projectID uuid.UUID) ([]string, error)
GetAccountProjectNamespaces(ctx context.Context, projectID uuid.UUID, accountID uuid.UUID) ([]string, error)
GetGroupProjectNamespaces(ctx context.Context, projectID uuid.UUID, accountID uuid.UUID) ([]string, error)
}
// namespaceService implements NamespaceService
type namespaceService struct {
db *bun.DB
}
// NewNamespaceService return new namespace service
func NewNamespaceService(db *bun.DB) NamespaceService {
return &namespaceService{db}
}
func (s *namespaceService) GetProjectNamespaces(ctx context.Context, projectID uuid.UUID) ([]string, error) {
cns, err := dao.GetProjectNamespaces(ctx, s.db, projectID)
if err != nil {
return nil, err
}
return utils.Unique(cns), nil
}
func (s *namespaceService) GetAccountProjectNamespaces(ctx context.Context, projectID, accountID uuid.UUID) ([]string, error) {
cns, err := dao.GetAccountProjectNamespaces(ctx, s.db, projectID, accountID)
if err != nil {
return nil, err
}
return utils.Unique(cns), nil
}
func (s *namespaceService) GetGroupProjectNamespaces(ctx context.Context, projectID, accountID uuid.UUID) ([]string, error) {
cns, err := dao.GetGroupProjectNamespaces(ctx, s.db, projectID, accountID)
if err != nil {
return nil, err
}
return utils.Unique(cns), nil
}