From c7b242f8aec8a99ac259eff8e817396b2cf4ad39 Mon Sep 17 00:00:00 2001 From: Kevin Joiner <10265309+KevinJoiner@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:08:56 -0500 Subject: [PATCH 1/2] Bump Postgres to 16.6 --- docker-compose.yml | 14 +++++++------- internal/helpers/test.go | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 16d3ca14..b1889f57 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: postgresql: - image: postgres:12.15 + image: postgres:16.6 ports: - "5432:5432" environment: @@ -17,12 +17,12 @@ services: environment: KAFKA_NODE_ID: 1 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT' - KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092' - KAFKA_PROCESS_ROLES: 'broker,controller' - KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093' - KAFKA_LISTENERS: 'PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092' - KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER' + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT" + KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092" + KAFKA_PROCESS_ROLES: "broker,controller" + KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:29093" + KAFKA_LISTENERS: "PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092" + KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER" # Randomly generated with kafka-storage random-uuid. CLUSTER_ID: "VRmAIvBTQFKTkwCZBPo5OA" volumes: diff --git a/internal/helpers/test.go b/internal/helpers/test.go index b23eb222..a6354a5a 100644 --- a/internal/helpers/test.go +++ b/internal/helpers/test.go @@ -36,7 +36,7 @@ func StartContainerDatabase(ctx context.Context, t *testing.T, migrationsDirRelP container, err = postgres.Run( ctx, - "docker.io/postgres:14.10-alpine", + "docker.io/postgres:16.6-alpine", postgres.WithDatabase("identity_api"), postgres.WithUsername("dimo"), postgres.WithPassword("dimo"), From 2a17c89430d4445eacb678ff3d8e32645b6dcf85 Mon Sep 17 00:00:00 2001 From: Kevin Joiner <10265309+KevinJoiner@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:56:19 -0500 Subject: [PATCH 2/2] lint fixes --- cmd/identity-api/main.go | 28 +++++++++++++++++++++++++++- graph/dcn_test.go | 3 +-- graph/resolver_test.go | 28 +++++++++++++++++++++++++++- graph/rewards_test.go | 17 ++++++++--------- graph/vehicle_test.go | 3 +-- 5 files changed, 64 insertions(+), 15 deletions(-) diff --git a/cmd/identity-api/main.go b/cmd/identity-api/main.go index 4bbf109a..7b3bb49d 100644 --- a/cmd/identity-api/main.go +++ b/cmd/identity-api/main.go @@ -7,9 +7,13 @@ import ( "os" "strconv" "strings" + "time" "github.com/99designs/gqlgen/graphql" "github.com/99designs/gqlgen/graphql/handler" + "github.com/99designs/gqlgen/graphql/handler/extension" + "github.com/99designs/gqlgen/graphql/handler/lru" + "github.com/99designs/gqlgen/graphql/handler/transport" "github.com/99designs/gqlgen/graphql/playground" "github.com/DIMO-Network/identity-api/graph" "github.com/DIMO-Network/identity-api/internal/config" @@ -23,6 +27,7 @@ import ( "github.com/gofiber/fiber/v2/middleware/adaptor" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/rs/zerolog" + "github.com/vektah/gqlparser/v2/ast" ) func main() { @@ -72,7 +77,7 @@ func main() { serveMonitoring(strconv.Itoa(settings.MonPort), &logger) - s := handler.NewDefaultServer(graph.NewExecutableSchema(cfg)) + s := newDefaultServer(graph.NewExecutableSchema(cfg)) srv := loader.Middleware(dbs, s, settings) @@ -116,3 +121,24 @@ func serveMonitoring(port string, logger *zerolog.Logger) *fiber.App { return monApp } + +func newDefaultServer(es graphql.ExecutableSchema) *handler.Server { + srv := handler.New(es) + + srv.AddTransport(transport.Websocket{ + KeepAlivePingInterval: 10 * time.Second, + }) + srv.AddTransport(transport.Options{}) + srv.AddTransport(transport.GET{}) + srv.AddTransport(transport.POST{}) + srv.AddTransport(transport.MultipartForm{}) + + srv.SetQueryCache(lru.New[*ast.QueryDocument](1000)) + + srv.Use(extension.Introspection{}) + srv.Use(extension.AutomaticPersistedQuery{ + Cache: lru.New[string](100), + }) + + return srv +} diff --git a/graph/dcn_test.go b/graph/dcn_test.go index e265f899..01489f65 100644 --- a/graph/dcn_test.go +++ b/graph/dcn_test.go @@ -10,7 +10,6 @@ import ( "github.com/99designs/gqlgen/client" "github.com/99designs/gqlgen/graphql" - "github.com/99designs/gqlgen/graphql/handler" "github.com/DIMO-Network/identity-api/graph/model" "github.com/DIMO-Network/identity-api/internal/config" "github.com/DIMO-Network/identity-api/internal/helpers" @@ -92,7 +91,7 @@ func TestDCNQuery(t *testing.T) { cfg.Directives.OneOf = func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error) { return next(ctx) } - c := client.New(loader.Middleware(pdb, handler.NewDefaultServer(NewExecutableSchema(cfg)), settings)) + c := client.New(loader.Middleware(pdb, NewDefaultServer(NewExecutableSchema(cfg)), settings)) type response struct { DCN struct { diff --git a/graph/resolver_test.go b/graph/resolver_test.go index a768fa7a..e8e46dfb 100644 --- a/graph/resolver_test.go +++ b/graph/resolver_test.go @@ -7,7 +7,11 @@ import ( "time" "github.com/99designs/gqlgen/client" + "github.com/99designs/gqlgen/graphql" "github.com/99designs/gqlgen/graphql/handler" + "github.com/99designs/gqlgen/graphql/handler/extension" + "github.com/99designs/gqlgen/graphql/handler/lru" + "github.com/99designs/gqlgen/graphql/handler/transport" "github.com/DIMO-Network/identity-api/internal/config" "github.com/DIMO-Network/identity-api/internal/helpers" "github.com/DIMO-Network/identity-api/internal/loader" @@ -17,6 +21,7 @@ import ( "github.com/goccy/go-json" "github.com/rs/zerolog" "github.com/stretchr/testify/assert" + "github.com/vektah/gqlparser/v2/ast" "github.com/volatiletech/null/v8" "github.com/volatiletech/sqlboiler/v4/boil" ) @@ -107,7 +112,7 @@ func TestResolver(t *testing.T) { logger := zerolog.Nop() repo := base.NewRepository(pdb, settings, &logger) resolver := NewResolver(repo) - c := client.New(loader.Middleware(pdb, handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolver})), settings)) + c := client.New(loader.Middleware(pdb, NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolver})), settings)) t.Run("ownedAftermarketDevices, return only one response", func(t *testing.T) { var resp interface{} @@ -156,3 +161,24 @@ func TestResolver(t *testing.T) { string(b)) }) } + +func NewDefaultServer(es graphql.ExecutableSchema) *handler.Server { + srv := handler.New(es) + + srv.AddTransport(transport.Websocket{ + KeepAlivePingInterval: 10 * time.Second, + }) + srv.AddTransport(transport.Options{}) + srv.AddTransport(transport.GET{}) + srv.AddTransport(transport.POST{}) + srv.AddTransport(transport.MultipartForm{}) + + srv.SetQueryCache(lru.New[*ast.QueryDocument](1000)) + + srv.Use(extension.Introspection{}) + srv.Use(extension.AutomaticPersistedQuery{ + Cache: lru.New[string](100), + }) + + return srv +} diff --git a/graph/rewards_test.go b/graph/rewards_test.go index 402a0eb9..9edf51d8 100644 --- a/graph/rewards_test.go +++ b/graph/rewards_test.go @@ -9,7 +9,6 @@ import ( "time" "github.com/99designs/gqlgen/client" - "github.com/99designs/gqlgen/graphql/handler" "github.com/DIMO-Network/identity-api/internal/config" test "github.com/DIMO-Network/identity-api/internal/helpers" "github.com/DIMO-Network/identity-api/internal/loader" @@ -216,7 +215,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetEarningsByVehicle_FwdPaginate() { c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) @@ -392,7 +391,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetEarningsByVehicle_FwdPaginate_Firs c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) @@ -597,7 +596,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetEarningsByVehicle_BackPaginate_Las c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) @@ -802,7 +801,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetEarningsByVehicle_BackPaginate_Las c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) @@ -965,7 +964,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetAftermarketDeviceEarnings_FwdPagin c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) @@ -1116,7 +1115,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetUserRewards_FwdPaginate() { c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) @@ -1289,7 +1288,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetUserRewards_BackPaginate_LastBefor c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) @@ -1419,7 +1418,7 @@ func (r *RewardsQueryTestSuite) Test_Query_GetUserRewards_NullEarnings() { c := client.New( loader.Middleware( r.pdb, - handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, + NewDefaultServer(NewExecutableSchema(Config{Resolvers: r.resolver})), r.settings, ), ) diff --git a/graph/vehicle_test.go b/graph/vehicle_test.go index 01f8f754..0a560ff6 100644 --- a/graph/vehicle_test.go +++ b/graph/vehicle_test.go @@ -7,7 +7,6 @@ import ( "net/http" "net/http/httptest" - "github.com/99designs/gqlgen/graphql/handler" "github.com/DIMO-Network/identity-api/internal/config" "github.com/DIMO-Network/identity-api/internal/helpers" "github.com/DIMO-Network/identity-api/internal/loader" @@ -47,7 +46,7 @@ func (s *VehicleTestSuite) SetupSuite() { resolver := NewResolver(repo) s.consumer = services.NewContractsEventsConsumer(db, &logger, &settings) - s.handler = loader.Middleware(db, handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolver})), settings) + s.handler = loader.Middleware(db, NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolver})), settings) } func (s *VehicleTestSuite) TearDownSuite() {