...
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
17
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