...

Source file src/github.com/launchdarkly/go-server-sdk/v6/internal/datastore/data_store_eval_impl.go

Documentation: github.com/launchdarkly/go-server-sdk/v6/internal/datastore

     1  package datastore
     2  
     3  import (
     4  	"github.com/launchdarkly/go-sdk-common/v3/ldlog"
     5  	ldeval "github.com/launchdarkly/go-server-sdk-evaluation/v2"
     6  	"github.com/launchdarkly/go-server-sdk-evaluation/v2/ldmodel"
     7  	"github.com/launchdarkly/go-server-sdk/v6/internal/datakinds"
     8  	"github.com/launchdarkly/go-server-sdk/v6/subsystems"
     9  )
    10  
    11  type dataStoreEvaluatorDataProviderImpl struct {
    12  	store   subsystems.DataStore
    13  	loggers ldlog.Loggers
    14  }
    15  
    16  // NewDataStoreEvaluatorDataProviderImpl creates the internal implementation of the adapter that connects
    17  // the Evaluator (from go-server-sdk-evaluation) with the data store.
    18  func NewDataStoreEvaluatorDataProviderImpl(store subsystems.DataStore, loggers ldlog.Loggers) ldeval.DataProvider {
    19  	return dataStoreEvaluatorDataProviderImpl{store, loggers}
    20  }
    21  
    22  func (d dataStoreEvaluatorDataProviderImpl) GetFeatureFlag(key string) *ldmodel.FeatureFlag {
    23  	item, err := d.store.Get(datakinds.Features, key)
    24  	if err == nil && item.Item != nil {
    25  		data := item.Item
    26  		if flag, ok := data.(*ldmodel.FeatureFlag); ok {
    27  			return flag
    28  		}
    29  		d.loggers.Errorf("unexpected data type (%T) found in store for feature key: %s. Returning default value", data, key)
    30  	}
    31  	return nil
    32  }
    33  
    34  func (d dataStoreEvaluatorDataProviderImpl) GetSegment(key string) *ldmodel.Segment {
    35  	item, err := d.store.Get(datakinds.Segments, key)
    36  	if err == nil && item.Item != nil {
    37  		data := item.Item
    38  		if segment, ok := data.(*ldmodel.Segment); ok {
    39  			return segment
    40  		}
    41  		d.loggers.Errorf("unexpected data type (%T) found in store for segment key: %s. Returning default value", data, key)
    42  	}
    43  	return nil
    44  }
    45  

View as plain text