Skip to content

Commit 82b2777

Browse files
committed
added inmemory storage
1 parent 14a7266 commit 82b2777

File tree

2 files changed

+467
-190
lines changed

2 files changed

+467
-190
lines changed

splitio/storage/__init__.py

Lines changed: 44 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,15 @@ def fetch_many(self, split_names):
3030
pass
3131

3232
@abc.abstractmethod
33-
def put(self, split):
33+
def update(self, to_add, to_delete, new_change_number):
3434
"""
35-
Store a split.
36-
37-
:param split: Split object to store
38-
:type split_name: splitio.models.splits.Split
39-
"""
40-
pass
41-
42-
@abc.abstractmethod
43-
def remove(self, split_name):
44-
"""
45-
Remove a split from storage.
46-
47-
:param split_name: Name of the feature to remove.
48-
:type split_name: str
49-
50-
:return: True if the split was found and removed. False otherwise.
51-
:rtype: bool
35+
Update feature flag storage.
36+
:param to_add: List of feature flags to add
37+
:type to_add: list[splitio.models.splits.Split]
38+
:param to_delete: List of feature flags to delete
39+
:type to_delete: list[splitio.models.splits.Split]
40+
:param new_change_number: New change number.
41+
:type new_change_number: int
5242
"""
5343
pass
5444

@@ -61,16 +51,6 @@ def get_change_number(self):
6151
"""
6252
pass
6353

64-
@abc.abstractmethod
65-
def set_change_number(self, new_change_number):
66-
"""
67-
Set the latest change number.
68-
69-
:param new_change_number: New change number.
70-
:type new_change_number: int
71-
"""
72-
pass
73-
7454
@abc.abstractmethod
7555
def get_split_names(self):
7656
"""
@@ -334,3 +314,39 @@ def record_bur_time_out(self):
334314
335315
"""
336316
pass
317+
318+
class FlagSetsFilter(object):
319+
"""Config Flagsets Filter storage."""
320+
321+
def __init__(self, flag_sets=[]):
322+
"""Constructor."""
323+
self.flag_sets = set(flag_sets)
324+
self.should_filter = any(flag_sets)
325+
self.sorted_flag_sets = sorted(flag_sets)
326+
327+
def set_exist(self, flag_set):
328+
"""
329+
Check if a flagset exist in flagset filter
330+
:param flag_set: set name
331+
:type flag_set: str
332+
:rtype: bool
333+
"""
334+
if not self.should_filter:
335+
return True
336+
if not isinstance(flag_set, str) or flag_set == '':
337+
return False
338+
339+
return any(self.flag_sets.intersection(set([flag_set])))
340+
341+
def intersect(self, flag_sets):
342+
"""
343+
Check if a set exist in config flagset filter
344+
:param flag_set: set of flagsets
345+
:type flag_set: set
346+
:rtype: bool
347+
"""
348+
if not self.should_filter:
349+
return True
350+
if not isinstance(flag_sets, set) or len(flag_sets) == 0:
351+
return False
352+
return any(self.flag_sets.intersection(flag_sets))

0 commit comments

Comments
 (0)