|
5 | 5 |
|
6 | 6 | "github.com/aws/aws-sdk-go-v2/service/sqs"
|
7 | 7 | "github.com/aws/aws-sdk-go-v2/service/sqs/types"
|
| 8 | + "gorm.io/gorm" |
8 | 9 |
|
| 10 | + sdkdatabasecontext "github.com/scribd/go-sdk/pkg/context/database" |
9 | 11 | sdkloggercontext "github.com/scribd/go-sdk/pkg/context/logger"
|
10 | 12 | sdkmetricscontext "github.com/scribd/go-sdk/pkg/context/metrics"
|
11 | 13 | sdkrequestidcontext "github.com/scribd/go-sdk/pkg/context/requestid"
|
@@ -108,3 +110,33 @@ func SetSubscriberMetrics(m sdkmetrics.Metrics) SubscriberRequestFunc {
|
108 | 110 | return sdkmetricscontext.ToContext(ctx, m)
|
109 | 111 | }
|
110 | 112 | }
|
| 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