-
Notifications
You must be signed in to change notification settings - Fork 76
/
data_store_helpers.go
54 lines (45 loc) · 1.55 KB
/
data_store_helpers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package sharedtest
import (
"github.com/launchdarkly/go-server-sdk-evaluation/v3/ldmodel"
"github.com/launchdarkly/go-server-sdk/v7/ldcomponents"
"github.com/launchdarkly/go-server-sdk/v7/subsystems"
"github.com/launchdarkly/go-server-sdk/v7/subsystems/ldstoreimpl"
"github.com/launchdarkly/go-server-sdk/v7/subsystems/ldstoretypes"
)
type ReceivedItemUpdate struct {
Kind ldstoretypes.DataKind
Key string
Item ldstoretypes.ItemDescriptor
}
func NewInMemoryStore() subsystems.DataStore {
store, err := ldcomponents.InMemoryDataStore().Build(subsystems.BasicClientContext{})
if err != nil {
panic(err)
}
return store
}
func UpsertFlag(store subsystems.DataStore, flag ldmodel.FeatureFlag) (bool, error) {
return store.Upsert(ldstoreimpl.Features(), flag.Key, FlagDesc(flag))
}
func UpsertSegment(store subsystems.DataStore, segment ldmodel.Segment) (bool, error) {
return store.Upsert(ldstoreimpl.Segments(), segment.Key, SegmentDesc(segment))
}
func FlagDesc(flag ldmodel.FeatureFlag) ldstoretypes.ItemDescriptor {
return ldstoretypes.ItemDescriptor{Version: flag.Version, Item: &flag}
}
func SegmentDesc(segment ldmodel.Segment) ldstoretypes.ItemDescriptor {
return ldstoretypes.ItemDescriptor{Version: segment.Version, Item: &segment}
}
func DeletedItem(version int) ldstoretypes.ItemDescriptor {
return ldstoretypes.ItemDescriptor{Version: version, Item: nil}
}
func MakeStoreWithData(initialized bool) subsystems.DataStore {
store := NewInMemoryStore()
if initialized {
err := store.Init(AllData)
if err != nil {
panic(err)
}
}
return store
}