ayaka.cache
群组缓存
1'''群组缓存''' 2from .json_ctrl import AbstractJsonCtrl 3 4 5class AyakaCacheCtrl(AbstractJsonCtrl): 6 '''ayaka缓存控制器,其数据空间在各群组、各插件间相互独立''' 7 8 def __repr__(self) -> str: 9 return f"AyakaCacheCtrl({self.get()})" 10 11 def __init__(self, data=None, *keys) -> None: 12 self._data = {} if data is None else data 13 self._keys = [str(k) for k in keys] 14 15 def _load(self): 16 return self._data 17 18 def _save(self, data): 19 self._data = data 20 21 def chain(self, *keys): 22 return AyakaCacheCtrl(self._data, *self._keys, *keys) 23 24 # 兼容旧API 25 def __getattr__(self, k): 26 return self.chain(k).get() 27 28 # 兼容旧API 29 def __setattr__(self, k, v): 30 if k in ["_data", "_keys"]: 31 super().__setattr__(k, v) 32 else: 33 self.chain(k).set(v)
6class AyakaCacheCtrl(AbstractJsonCtrl): 7 '''ayaka缓存控制器,其数据空间在各群组、各插件间相互独立''' 8 9 def __repr__(self) -> str: 10 return f"AyakaCacheCtrl({self.get()})" 11 12 def __init__(self, data=None, *keys) -> None: 13 self._data = {} if data is None else data 14 self._keys = [str(k) for k in keys] 15 16 def _load(self): 17 return self._data 18 19 def _save(self, data): 20 self._data = data 21 22 def chain(self, *keys): 23 return AyakaCacheCtrl(self._data, *self._keys, *keys) 24 25 # 兼容旧API 26 def __getattr__(self, k): 27 return self.chain(k).get() 28 29 # 兼容旧API 30 def __setattr__(self, k, v): 31 if k in ["_data", "_keys"]: 32 super().__setattr__(k, v) 33 else: 34 self.chain(k).set(v)
ayaka缓存控制器,其数据空间在各群组、各插件间相互独立