9
9
"time"
10
10
11
11
"entgo.io/contrib/entgql"
12
+ "github.com/99designs/gqlgen/graphql"
12
13
"github.com/99designs/gqlgen/graphql/handler"
13
14
"github.com/99designs/gqlgen/graphql/handler/extension"
14
15
"github.com/99designs/gqlgen/graphql/handler/lru"
@@ -21,6 +22,7 @@ import (
21
22
"github.com/database-playground/backend-v2/internal/auth"
22
23
"github.com/database-playground/backend-v2/internal/config"
23
24
"github.com/database-playground/backend-v2/internal/events"
25
+ "github.com/database-playground/backend-v2/internal/graphql/apq"
24
26
"github.com/database-playground/backend-v2/internal/httputils"
25
27
"github.com/database-playground/backend-v2/internal/sqlrunner"
26
28
"github.com/database-playground/backend-v2/internal/submission"
@@ -44,8 +46,20 @@ func SqlRunner(cfg config.Config) *sqlrunner.SqlRunner {
44
46
return sqlrunner .NewSqlRunner (cfg .SqlRunner )
45
47
}
46
48
49
+ func ApqCache (redisClient rueidis.Client ) graphql.Cache [string ] {
50
+ return apq .NewCache (redisClient , 24 * time .Hour )
51
+ }
52
+
47
53
// GqlgenHandler creates a gqlgen handler.
48
- func GqlgenHandler (entClient * ent.Client , storage auth.Storage , sqlrunner * sqlrunner.SqlRunner , useraccount * useraccount.Context , eventService * events.EventService , submissionService * submission.SubmissionService ) * handler.Server {
54
+ func GqlgenHandler (
55
+ entClient * ent.Client ,
56
+ storage auth.Storage ,
57
+ sqlrunner * sqlrunner.SqlRunner ,
58
+ useraccount * useraccount.Context ,
59
+ eventService * events.EventService ,
60
+ submissionService * submission.SubmissionService ,
61
+ apqCache graphql.Cache [string ],
62
+ ) * handler.Server {
49
63
srv := handler .New (graph .NewSchema (entClient , storage , sqlrunner , useraccount , eventService , submissionService ))
50
64
51
65
srv .AddTransport (transport.Options {})
@@ -57,7 +71,7 @@ func GqlgenHandler(entClient *ent.Client, storage auth.Storage, sqlrunner *sqlru
57
71
srv .Use (entgql.Transactioner {TxOpener : entClient })
58
72
srv .Use (extension.Introspection {})
59
73
srv .Use (extension.AutomaticPersistedQuery {
60
- Cache : lru. New [ string ]( 100 ) ,
74
+ Cache : apqCache ,
61
75
})
62
76
63
77
srv .SetErrorPresenter (graph .NewErrorPresenter ())
@@ -86,7 +100,12 @@ func AuthService(entClient *ent.Client, storage auth.Storage, config config.Conf
86
100
}
87
101
88
102
// GinEngine creates a gin engine.
89
- func GinEngine (services []httpapi.Service , authStorage auth.Storage , gqlgenHandler * handler.Server , cfg config.Config ) * gin.Engine {
103
+ func GinEngine (
104
+ services []httpapi.Service ,
105
+ authStorage auth.Storage ,
106
+ gqlgenHandler * handler.Server ,
107
+ cfg config.Config ,
108
+ ) * gin.Engine {
90
109
engine := gin .New ()
91
110
92
111
if err := engine .SetTrustedProxies (cfg .TrustProxies ); err != nil {
0 commit comments