/
object-meta-resolver.go
65 lines (55 loc) · 2.05 KB
/
object-meta-resolver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Package edgecluster implements different edge cluster GraphQL query resovlers required by the GraphQL transport layer
package edgecluster
import (
"context"
"github.com/decentralized-cloud/api-gateway/services/graphql/types/edgecluster"
edgeclusterGrpcContract "github.com/decentralized-cloud/edge-cluster/contract/grpc/go"
"github.com/graph-gophers/graphql-go"
commonErrors "github.com/micro-business/go-core/system/errors"
"go.uber.org/zap"
)
type objectMetaResolver struct {
logger *zap.Logger
metadata *edgeclusterGrpcContract.ObjectMeta
}
// NewObjectMetaResolver creates new instance of the objectMetaResolver, setting up all dependencies and returns the instance
// ctx: Mandatory. Reference to the context
// logger: Mandatory. Reference to the logger service
// metadata: Mandatory. Contains the object metadata.
// Returns the new instance or error if something goes wrong
func NewObjectMetaResolver(
ctx context.Context,
logger *zap.Logger,
metadata *edgeclusterGrpcContract.ObjectMeta) (edgecluster.ObjectMetaResolverContract, error) {
if ctx == nil {
return nil, commonErrors.NewArgumentNilError("ctx", "ctx is required")
}
if logger == nil {
return nil, commonErrors.NewArgumentNilError("logger", "logger is required")
}
if metadata == nil {
return nil, commonErrors.NewArgumentNilError("metadata", "metadata is required")
}
return &objectMetaResolver{
logger: logger,
metadata: metadata,
}, nil
}
// ID returns the object unique identitfier
// ctx: Mandatory. Reference to the context
// Returns the object unique identitfier
func (r *objectMetaResolver) ID(ctx context.Context) graphql.ID {
return graphql.ID(r.metadata.Id)
}
// Name returns the object name
// ctx: Mandatory. Reference to the context
// Returns the object name
func (r *objectMetaResolver) Name(ctx context.Context) string {
return r.metadata.Name
}
// Namespace returns the object namespace
// ctx: Mandatory. Reference to the context
// Returns the object namespace
func (r *objectMetaResolver) Namespace(ctx context.Context) string {
return r.metadata.Namespace
}