@@ -5,40 +5,40 @@ import (
5
5
"fmt"
6
6
"github.com/clarkmcc/cloudcore/app/backend/middleware"
7
7
"github.com/clarkmcc/cloudcore/cmd/cloudcore-server/database"
8
+ "github.com/clarkmcc/cloudcore/pkg/packages"
8
9
"github.com/graphql-go/graphql"
9
10
"github.com/spf13/cast"
10
11
"go.uber.org/zap"
11
12
)
12
13
13
- const contextKeyLogger = "logger"
14
- const contextKeyDatabase = "database"
14
+ type contextKeyLogger struct {}
15
+ type contextKeyDatabase struct {}
16
+ type contextKeyPackages struct {}
15
17
16
18
func (s * Server ) graphqlContext (ctx context.Context ) context.Context {
17
- ctx = context .WithValue (ctx , contextKeyLogger , s .logger )
18
- ctx = context .WithValue (ctx , contextKeyDatabase , s .database )
19
+ ctx = context .WithValue (ctx , contextKeyLogger {}, s .logger )
20
+ ctx = context .WithValue (ctx , contextKeyDatabase {}, s .database )
21
+ ctx = context .WithValue (ctx , contextKeyPackages {}, s .packages )
19
22
return ctx
20
23
}
21
24
22
- func logger (ctx context.Context ) * zap.Logger {
23
- return ctx .Value (contextKeyLogger ).(* zap.Logger )
24
- }
25
-
26
- func db (ctx context.Context ) database.Database {
27
- return ctx .Value (contextKeyDatabase ).(database.Database )
28
- }
29
-
30
25
type resolveContext [S any ] struct {
31
26
context.Context
32
- db database.Database
33
- params graphql.ResolveParams
34
- logger * zap.Logger
35
- source S
27
+ db database.Database
28
+ params graphql.ResolveParams
29
+ logger * zap.Logger
30
+ packages packages.Provider
31
+ source S
36
32
}
37
33
38
34
func (r * resolveContext [S ]) getStringArg (name string ) string {
39
35
return cast .ToString (r .params .Args [name ])
40
36
}
41
37
38
+ func (r * resolveContext [S ]) getBoolArg (name string ) bool {
39
+ return cast .ToBool (r .params .Args [name ])
40
+ }
41
+
42
42
func (r * resolveContext [S ]) canAccessProject (projectId string ) error {
43
43
sub := middleware .SubjectFromContext (r )
44
44
if sub == "" {
@@ -65,11 +65,12 @@ func wrapper[S any, T any](fn resolverFunc[T, S]) func(params graphql.ResolvePar
65
65
return nil , fmt .Errorf ("invalid source type: %T, expected %T" , params .Source , s )
66
66
}
67
67
return fn (resolveContext [S ]{
68
- Context : ctx ,
69
- db : db (ctx ),
70
- logger : logger (ctx ),
71
- source : source ,
72
- params : params ,
68
+ Context : ctx ,
69
+ db : ctx .Value (contextKeyDatabase {}).(database.Database ),
70
+ packages : ctx .Value (contextKeyPackages {}).(packages.Provider ),
71
+ logger : ctx .Value (contextKeyLogger {}).(* zap.Logger ),
72
+ source : source ,
73
+ params : params ,
73
74
})
74
75
}
75
76
}
0 commit comments