Skip to content

Commit a12605e

Browse files
committed
feat: Add ability to set DB to SQS subscriber context
1 parent 29b0a21 commit a12605e

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

pkg/transport/sqs/request_response_funcs.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import (
55

66
"github.com/aws/aws-sdk-go-v2/service/sqs"
77
"github.com/aws/aws-sdk-go-v2/service/sqs/types"
8+
"gorm.io/gorm"
89

10+
sdkdatabasecontext "github.com/scribd/go-sdk/pkg/context/database"
911
sdkloggercontext "github.com/scribd/go-sdk/pkg/context/logger"
1012
sdkmetricscontext "github.com/scribd/go-sdk/pkg/context/metrics"
1113
sdkrequestidcontext "github.com/scribd/go-sdk/pkg/context/requestid"
@@ -108,3 +110,33 @@ func SetSubscriberMetrics(m sdkmetrics.Metrics) SubscriberRequestFunc {
108110
return sdkmetricscontext.ToContext(ctx, m)
109111
}
110112
}
113+
114+
// SetSubscriberDatabase returns SubscriberRequestFunc that sets the GORM database to the request context.
115+
func SetSubscriberDatabase(db *gorm.DB) SubscriberRequestFunc {
116+
return func(ctx context.Context, cancel context.CancelFunc, message types.Message) context.Context {
117+
return sdkdatabasecontext.ToContext(ctx, db)
118+
}
119+
}
120+
121+
// SetSubscriberDatabaseLogging returns SubscriberRequestFunc that sets the SDL Logger to GORM database
122+
// and sets new gorm DB to the request context.
123+
func SetSubscriberDatabaseLogging() SubscriberRequestFunc {
124+
return func(ctx context.Context, cancel context.CancelFunc, message types.Message) context.Context {
125+
db, err := sdkdatabasecontext.Extract(ctx)
126+
if err != nil {
127+
return ctx
128+
}
129+
130+
l, err := sdkloggercontext.Extract(ctx)
131+
if err != nil {
132+
return ctx
133+
}
134+
135+
newDB := db.Session(&gorm.Session{
136+
Logger: sdklogger.NewGormLogger(l),
137+
NewDB: true,
138+
})
139+
140+
return sdkdatabasecontext.ToContext(ctx, newDB)
141+
}
142+
}

0 commit comments

Comments
 (0)