...
1 package resolver
2
3
4
5
6
7 import (
8 "context"
9 "fmt"
10
11 "edge-infra.dev/pkg/edge/api/graph/model"
12 )
13
14
15 func (r *mutationResolver) CreateNamespace(ctx context.Context, createNamespace model.NamespaceCreateInput) (*model.Namespace, error) {
16 return r.NamespaceService.CreateNamespaceEntry(ctx, &createNamespace)
17 }
18
19
20 func (r *mutationResolver) DeleteNamespace(ctx context.Context, bannerEdgeID string, name string) (bool, error) {
21 namespaces, err := r.NamespaceService.GetBannerNamespaces(ctx, bannerEdgeID, &name)
22 if err != nil {
23 return false, err
24 }
25 if len(namespaces) != 1 {
26 return false, fmt.Errorf("could not find namespace to delete")
27 }
28 namespace := namespaces[0]
29 count, err := r.NamespaceService.GetNumClustersUsingNamespace(ctx, namespace.NamespaceEdgeID)
30 if err != nil {
31 return false, err
32 }
33 if count != 0 {
34 return false, fmt.Errorf("cannot delete a namespace that is in use by clusters")
35 }
36 if err = r.NamespaceService.DeleteNamespaceEntry(ctx, bannerEdgeID, name); err != nil {
37 return false, err
38 }
39 return true, nil
40 }
41
42
43 func (r *queryResolver) BannerNamespaces(ctx context.Context, bannerEdgeID string, name *string) ([]*model.Namespace, error) {
44 return r.NamespaceService.GetBannerNamespaces(ctx, bannerEdgeID, name)
45 }
46
47
48 func (r *queryResolver) ClusterNamespaces(ctx context.Context, clusterEdgeID string, name *string) ([]*model.Namespace, error) {
49 return r.NamespaceService.GetClusterNamespaces(ctx, clusterEdgeID, name)
50 }
51
View as plain text