github.com/kubeshop/testkube@v1.17.23/pkg/logs/repository/factory.go (about) 1 package repository 2 3 import ( 4 "errors" 5 6 "github.com/kubeshop/testkube/pkg/logs/client" 7 "github.com/kubeshop/testkube/pkg/logs/state" 8 "github.com/kubeshop/testkube/pkg/storage" 9 ) 10 11 var ErrUnknownState = errors.New("unknown state") 12 13 type Factory interface { 14 GetRepository(state state.LogState) (LogsRepository, error) 15 } 16 17 func NewJsMinioFactory(storageClient storage.ClientBucket, bucket string, logStream client.StreamGetter) Factory { 18 return JsMinioFactory{ 19 storageClient: storageClient, 20 bucket: bucket, 21 logStream: logStream, 22 } 23 } 24 25 type JsMinioFactory struct { 26 storageClient storage.ClientBucket 27 bucket string 28 logStream client.StreamGetter 29 } 30 31 func (b JsMinioFactory) GetRepository(s state.LogState) (LogsRepository, error) { 32 switch s { 33 // pending get from buffer 34 case state.LogStatePending: 35 return NewJetstreamRepository(b.logStream), nil 36 case state.LogStateFinished, state.LogStateUnknown: 37 return NewMinioRepository(b.storageClient, b.bucket), nil 38 default: 39 return nil, ErrUnknownState 40 } 41 }