From c8b04fbf6d91b1ddd773b5660714ad67982c482c Mon Sep 17 00:00:00 2001 From: Sergey Vilgelm Date: Sun, 5 Feb 2023 00:37:21 -0800 Subject: [PATCH] Adopt to mongo-driver v1.11.x (#81) * add Timeout function to Client * regenerate the mocks --- client.go | 6 ++++++ go.mod | 2 +- mocks/gomock/mocks.go | 14 ++++++++++++++ mocks/mockery/client.go | 18 ++++++++++++++++++ session.go | 24 ++++++++++++++++-------- 5 files changed, 55 insertions(+), 9 deletions(-) diff --git a/client.go b/client.go index 4138c82..c459a49 100644 --- a/client.go +++ b/client.go @@ -2,6 +2,7 @@ package mongoifc import ( "context" + "time" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" @@ -23,6 +24,7 @@ type Client interface { NumberSessionsInProgress() int Ping(ctx context.Context, rp *readpref.ReadPref) error StartSession(opts ...*options.SessionOptions) (Session, error) + Timeout() *time.Duration UseSession(ctx context.Context, fn func(sc SessionContext) error) error UseSessionWithOptions(ctx context.Context, opts *options.SessionOptions, fn func(sc SessionContext) error) error Watch( @@ -81,6 +83,10 @@ func (c *client) StartSession(opts ...*options.SessionOptions) (Session, error) return wrapSession(ss, c), nil } +func (c *client) Timeout() *time.Duration { + return c.cl.Timeout() +} + func (c *client) UseSession(ctx context.Context, fn func(sc SessionContext) error) error { return c.cl.UseSession(ctx, wrapFn1(fn, c)) } diff --git a/go.mod b/go.mod index 0284afc..9b0bb81 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/sv-tools/mongoifc -go 1.19 +go 1.20 require ( github.com/golang/mock v1.6.0 diff --git a/mocks/gomock/mocks.go b/mocks/gomock/mocks.go index a356be8..322efe4 100644 --- a/mocks/gomock/mocks.go +++ b/mocks/gomock/mocks.go @@ -312,6 +312,20 @@ func (mr *MockClientMockRecorder) StartSession(arg0 ...interface{}) *gomock.Call return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartSession", reflect.TypeOf((*MockClient)(nil).StartSession), arg0...) } +// Timeout mocks base method. +func (m *MockClient) Timeout() *time.Duration { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Timeout") + ret0, _ := ret[0].(*time.Duration) + return ret0 +} + +// Timeout indicates an expected call of Timeout. +func (mr *MockClientMockRecorder) Timeout() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Timeout", reflect.TypeOf((*MockClient)(nil).Timeout)) +} + // UseSession mocks base method. func (m *MockClient) UseSession(arg0 context.Context, arg1 func(mongoifc.SessionContext) error) error { m.ctrl.T.Helper() diff --git a/mocks/mockery/client.go b/mocks/mockery/client.go index 9de1d8d..070e210 100644 --- a/mocks/mockery/client.go +++ b/mocks/mockery/client.go @@ -13,6 +13,8 @@ import ( options "go.mongodb.org/mongo-driver/mongo/options" readpref "go.mongodb.org/mongo-driver/mongo/readpref" + + time "time" ) // Client is an autogenerated mock type for the Client type @@ -186,6 +188,22 @@ func (_m *Client) StartSession(opts ...*options.SessionOptions) (mongoifc.Sessio return r0, r1 } +// Timeout provides a mock function with given fields: +func (_m *Client) Timeout() *time.Duration { + ret := _m.Called() + + var r0 *time.Duration + if rf, ok := ret.Get(0).(func() *time.Duration); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*time.Duration) + } + } + + return r0 +} + // UseSession provides a mock function with given fields: ctx, fn func (_m *Client) UseSession(ctx context.Context, fn func(mongoifc.SessionContext) error) error { ret := _m.Called(ctx, fn) diff --git a/session.go b/session.go index 6ac2fd5..e7edf98 100644 --- a/session.go +++ b/session.go @@ -12,21 +12,29 @@ import ( // Session is an interface for `mongo.Session` structure // Documentation: https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#Session type Session interface { + // Functions to modify session state. + + StartTransaction(opts ...*options.TransactionOptions) error AbortTransaction(ctx context.Context) error - AdvanceClusterTime(bson.Raw) error - AdvanceOperationTime(*primitive.Timestamp) error - Client() Client - ClusterTime() bson.Raw CommitTransaction(ctx context.Context) error - EndSession(ctx context.Context) - ID() bson.Raw - OperationTime() *primitive.Timestamp - StartTransaction(opts ...*options.TransactionOptions) error WithTransaction( ctx context.Context, fn func(sc SessionContext) (interface{}, error), opts ...*options.TransactionOptions, ) (interface{}, error) + EndSession(ctx context.Context) + + // Functions to retrieve session properties. + + ClusterTime() bson.Raw + OperationTime() *primitive.Timestamp + Client() Client + ID() bson.Raw + + // Functions to modify mutable session properties. + + AdvanceClusterTime(bson.Raw) error + AdvanceOperationTime(*primitive.Timestamp) error } type session struct {