99 "time"
1010
1111 "entgo.io/contrib/entgql"
12+ "github.com/99designs/gqlgen/graphql"
1213 "github.com/99designs/gqlgen/graphql/handler"
1314 "github.com/99designs/gqlgen/graphql/handler/extension"
1415 "github.com/99designs/gqlgen/graphql/handler/lru"
@@ -21,6 +22,7 @@ import (
2122 "github.com/database-playground/backend-v2/internal/auth"
2223 "github.com/database-playground/backend-v2/internal/config"
2324 "github.com/database-playground/backend-v2/internal/events"
25+ "github.com/database-playground/backend-v2/internal/graphql/apq"
2426 "github.com/database-playground/backend-v2/internal/httputils"
2527 "github.com/database-playground/backend-v2/internal/sqlrunner"
2628 "github.com/database-playground/backend-v2/internal/submission"
@@ -44,8 +46,20 @@ func SqlRunner(cfg config.Config) *sqlrunner.SqlRunner {
4446 return sqlrunner .NewSqlRunner (cfg .SqlRunner )
4547}
4648
49+ func ApqCache (redisClient rueidis.Client ) graphql.Cache [string ] {
50+ return apq .NewCache (redisClient , 24 * time .Hour )
51+ }
52+
4753// 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 {
4963 srv := handler .New (graph .NewSchema (entClient , storage , sqlrunner , useraccount , eventService , submissionService ))
5064
5165 srv .AddTransport (transport.Options {})
@@ -57,7 +71,7 @@ func GqlgenHandler(entClient *ent.Client, storage auth.Storage, sqlrunner *sqlru
5771 srv .Use (entgql.Transactioner {TxOpener : entClient })
5872 srv .Use (extension.Introspection {})
5973 srv .Use (extension.AutomaticPersistedQuery {
60- Cache : lru. New [ string ]( 100 ) ,
74+ Cache : apqCache ,
6175 })
6276
6377 srv .SetErrorPresenter (graph .NewErrorPresenter ())
@@ -86,7 +100,12 @@ func AuthService(entClient *ent.Client, storage auth.Storage, config config.Conf
86100}
87101
88102// 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 {
90109 engine := gin .New ()
91110
92111 if err := engine .SetTrustedProxies (cfg .TrustProxies ); err != nil {
0 commit comments