From 79c1f5b1478a54dd377c3f2de82ea48ada0311ad Mon Sep 17 00:00:00 2001 From: profitroll Date: Wed, 9 Jul 2025 16:49:01 +0200 Subject: [PATCH] Added support for cache prefixes and TTL --- classes/holo_bot.py | 12 ++++++++++-- config_example.json | 6 ++++-- migrations/202507091444.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 migrations/202507091444.py diff --git a/classes/holo_bot.py b/classes/holo_bot.py index aad37a6..fbd4f3d 100644 --- a/classes/holo_bot.py +++ b/classes/holo_bot.py @@ -1,5 +1,6 @@ import logging from logging import Logger +from typing import Literal from libbot.cache.classes import CacheMemcached, CacheRedis from libbot.cache.manager import create_cache_client @@ -16,5 +17,12 @@ class HoloBot(PycordBot): self._set_cache_engine() def _set_cache_engine(self) -> None: - if "cache" in self.config and self.config["cache"]["type"] is not None: - self.cache = create_cache_client(self.config, self.config["cache"]["type"]) + cache_type: Literal["redis", "memcached"] | None = self.config["cache"]["type"] + + if "cache" in self.config and cache_type is not None: + self.cache = create_cache_client( + self.config, + cache_type, + prefix=self.config["cache"][cache_type]["prefix"], + default_ttl_seconds=3600, + ) diff --git a/config_example.json b/config_example.json index 146e50f..8545fb4 100644 --- a/config_example.json +++ b/config_example.json @@ -25,10 +25,12 @@ "cache": { "type": null, "memcached": { - "uri": "127.0.0.1:11211" + "uri": "127.0.0.1:11211", + "prefix": null }, "redis": { - "uri": "redis://127.0.0.1:6379/0" + "uri": "redis://127.0.0.1:6379/0", + "prefix": null } }, "logging": { diff --git a/migrations/202507091444.py b/migrations/202507091444.py new file mode 100644 index 0000000..4a36e17 --- /dev/null +++ b/migrations/202507091444.py @@ -0,0 +1,31 @@ +import logging +from logging import Logger + +from libbot.utils import config_set, config_delete +from mongodb_migrations.base import BaseMigration + +logger: Logger = logging.getLogger(__name__) + + +class Migration(BaseMigration): + def upgrade(self): + try: + config_set("prefix", None, "cache", "memcached") + config_set("prefix", None, "cache", "redis") + except Exception as exc: + logger.error( + "Could not upgrade the config during migration '%s' due to: %s", + __name__, + exc, + ) + + def downgrade(self): + try: + config_delete("prefix", "cache", "redis") + config_delete("prefix", "cache", "memcached") + except Exception as exc: + logger.error( + "Could not downgrade the config during migration '%s' due to: %s", + __name__, + exc, + )