to_ck/v2/handler_event.py
2021-04-24 16:00:28 +08:00

55 lines
1.4 KiB
Python

import copy
__all__ = 'HandlerEvent',
class HandlerEvent:
tb = 'event'
def __init__(self, db_client):
self.event = dict()
self.db_client = db_client
def merge_update(self, a: dict, b: dict):
"""
可更新事件 合并
:param a:
:param b:
:return:
"""
if 'properties' not in b or not isinstance(b['properties'], dict):
return
for k, v in b['properties'].items():
a[k] = v
def track(self, db, data):
event = self.event.setdefault(db, {})
event[len(event)] = data
def track_update(self, db, data):
if '#event_id' not in data:
return
old_event = self.db_client.get_one(db, self.tb, {'#event_id': data['#event_id']})
old_event['sign'] = -1
event = self.event.setdefault(db, {})
event[len(event)] = old_event
new_event = copy.deepcopy(old_event)
self.merge_update(new_event, data)
new_event['sign'] = 1
event[len(event)] = new_event
def track_overwrite(self, db, data):
if '#event_id' not in data:
return
old_event = self.db_client.get_one(db, self.tb, {'#event_id': data['#event_id']})
old_event['sign'] = -1
event = self.event.setdefault(db, {})
event[len(event)] = old_event
event[len(event)] = data
@property
def buffer_pool(self):
return self.tb, self.event