mirror of https://github.com/coddrago/Heroku
1.3.1
- Remove legacy `self.get` migration from strings - Add "forced exp_time" by using force and exp time if "current cache time" > forced exp_time replace it with current and force refresh it.pull/1/head
parent
6f43fbc994
commit
5f5ac8859e
|
@ -949,7 +949,7 @@ class Modules:
|
||||||
instance.allclients = self.allclients
|
instance.allclients = self.allclients
|
||||||
instance.allmodules = self
|
instance.allmodules = self
|
||||||
instance.hikka = True
|
instance.hikka = True
|
||||||
instance.get = partial(self._mod_get, _module=instance)
|
instance.get = partial(self._mod_get, _modname=instance.__class__.__name__)
|
||||||
instance.set = partial(self._mod_set, _modname=instance.__class__.__name__)
|
instance.set = partial(self._mod_set, _modname=instance.__class__.__name__)
|
||||||
instance.set = partial(self._mod_pointer, _modname=instance.__class__.__name__)
|
instance.set = partial(self._mod_pointer, _modname=instance.__class__.__name__)
|
||||||
instance.get_prefix = partial(self._db.get, "hikka.main", "command_prefix", ".")
|
instance.get_prefix = partial(self._db.get, "hikka.main", "command_prefix", ".")
|
||||||
|
@ -989,27 +989,8 @@ class Modules:
|
||||||
self,
|
self,
|
||||||
key: str,
|
key: str,
|
||||||
default: Optional[Hashable] = None,
|
default: Optional[Hashable] = None,
|
||||||
_module: Module = None,
|
_modname: str = None,
|
||||||
) -> Hashable:
|
) -> Hashable:
|
||||||
mod, legacy = _module.__class__.__name__, _module.strings["name"]
|
|
||||||
|
|
||||||
if self._db.get(legacy, key, Placeholder) is not Placeholder:
|
|
||||||
for iterkey, value in self._db[legacy].items():
|
|
||||||
if iterkey == "__config__":
|
|
||||||
# Config already uses classname as key
|
|
||||||
# No need to migrate
|
|
||||||
continue
|
|
||||||
|
|
||||||
if isinstance(value, dict) and isinstance(
|
|
||||||
self._db.get(mod, iterkey), dict
|
|
||||||
):
|
|
||||||
self._db[mod][iterkey].update(value)
|
|
||||||
else:
|
|
||||||
self._db.set(mod, iterkey, value)
|
|
||||||
|
|
||||||
logger.debug(f"Migrated {legacy} -> {mod}")
|
|
||||||
del self._db[legacy]
|
|
||||||
|
|
||||||
return self._db.get(mod, key, default)
|
return self._db.get(mod, key, default)
|
||||||
|
|
||||||
def _mod_set(self, key: str, value: Hashable, _modname: str = None) -> bool:
|
def _mod_set(self, key: str, value: Hashable, _modname: str = None) -> bool:
|
||||||
|
|
|
@ -65,6 +65,7 @@ class CacheRecordPerms:
|
||||||
self._hashable_entity = copy.deepcopy(hashable_entity)
|
self._hashable_entity = copy.deepcopy(hashable_entity)
|
||||||
self._hashable_user = copy.deepcopy(hashable_user)
|
self._hashable_user = copy.deepcopy(hashable_user)
|
||||||
self._exp = round(time.time() + exp)
|
self._exp = round(time.time() + exp)
|
||||||
|
self.ts = time.time()
|
||||||
|
|
||||||
def expired(self):
|
def expired(self):
|
||||||
return self._exp < time.time()
|
return self._exp < time.time()
|
||||||
|
@ -165,14 +166,14 @@ def install_perms_caching(client: TelegramClient):
|
||||||
async def new(
|
async def new(
|
||||||
entity: EntityLike,
|
entity: EntityLike,
|
||||||
user: Optional[EntityLike] = None,
|
user: Optional[EntityLike] = None,
|
||||||
exp: int = 5 * 60,
|
exp: int = None,
|
||||||
force: bool = False,
|
force: bool = False,
|
||||||
):
|
):
|
||||||
# Will be used to determine, which client caused logging messages
|
# Will be used to determine, which client caused logging messages
|
||||||
# parsed via inspect.stack()
|
# parsed via inspect.stack()
|
||||||
_hikka_client_id_logging_tag = copy.copy(client.tg_id) # skipcq
|
_hikka_client_id_logging_tag = copy.copy(client.tg_id) # skipcq
|
||||||
|
|
||||||
if force:
|
if force and not exp:
|
||||||
return await old(entity, user)
|
return await old(entity, user)
|
||||||
|
|
||||||
entity = await client.get_entity(entity)
|
entity = await client.get_entity(entity)
|
||||||
|
@ -214,6 +215,11 @@ def install_perms_caching(client: TelegramClient):
|
||||||
hashable_entity
|
hashable_entity
|
||||||
and hashable_user
|
and hashable_user
|
||||||
and hashable_user in client._hikka_perms_cache.get(hashable_entity, {})
|
and hashable_user in client._hikka_perms_cache.get(hashable_entity, {})
|
||||||
|
and (
|
||||||
|
not exp
|
||||||
|
or client._hikka_perms_cache[hashable_entity][hashable_user].ts + exp
|
||||||
|
> time.time()
|
||||||
|
)
|
||||||
):
|
):
|
||||||
logger.debug(f"Using cached perms {hashable_entity} ({hashable_user})")
|
logger.debug(f"Using cached perms {hashable_entity} ({hashable_user})")
|
||||||
return copy.deepcopy(
|
return copy.deepcopy(
|
||||||
|
@ -227,7 +233,7 @@ def install_perms_caching(client: TelegramClient):
|
||||||
hashable_entity,
|
hashable_entity,
|
||||||
hashable_user,
|
hashable_user,
|
||||||
resolved_perms,
|
resolved_perms,
|
||||||
exp,
|
exp or 5 * 60,
|
||||||
)
|
)
|
||||||
client._hikka_perms_cache.setdefault(hashable_entity, {})[
|
client._hikka_perms_cache.setdefault(hashable_entity, {})[
|
||||||
hashable_user
|
hashable_user
|
||||||
|
|
Loading…
Reference in New Issue