@@ -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