mirror of
https://github.com/paralus/paralus.git
synced 2026-02-14 17:49:51 +00:00
57 lines
1.6 KiB
Go
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
|
|
}
|