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  }