base context for wrappers updated
This commit is contained in:
@@ -69,15 +69,22 @@ class RedisActions:
|
||||
redis_row = RedisRow()
|
||||
redis_row.merge(set_values=list_keys)
|
||||
redis_row.feed(value)
|
||||
redis_row.expires_at_string = None
|
||||
redis_row.expires_at = None
|
||||
try:
|
||||
if expires:
|
||||
redis_row.expires_at = expires
|
||||
expiry_time = cls.get_expiry_time(expiry_kwargs=expires)
|
||||
redis_cli.setex(
|
||||
name=redis_row.redis_key,
|
||||
time=expiry_time,
|
||||
value=redis_row.value,
|
||||
)
|
||||
redis_row.expires_at = str(arrow.now().shift(seconds=expiry_time).format(MainConfig.DATETIME_FORMAT))
|
||||
redis_row.expires_at_string = str(
|
||||
arrow.now()
|
||||
.shift(seconds=expiry_time)
|
||||
.format(MainConfig.DATETIME_FORMAT)
|
||||
)
|
||||
else:
|
||||
redis_cli.set(name=redis_row.redis_key, value=redis_row.value)
|
||||
|
||||
@@ -126,7 +133,7 @@ class RedisActions:
|
||||
return RedisResponse(
|
||||
status=False,
|
||||
message="Value is not get successfully.",
|
||||
data=list_of_rows
|
||||
data=list_of_rows,
|
||||
)
|
||||
except Exception as e:
|
||||
return RedisResponse(
|
||||
@@ -134,4 +141,3 @@ class RedisActions:
|
||||
message="Value is not get successfully.",
|
||||
error=str(e),
|
||||
)
|
||||
|
||||
|
||||
@@ -45,7 +45,19 @@ class RedisRow:
|
||||
key: ClassVar[Union[str, bytes]]
|
||||
value: ClassVar[Any]
|
||||
delimiter: ClassVar[str] = ":"
|
||||
expires_at: ClassVar[Optional[str]] = None
|
||||
expires_at: Optional[dict] = {"seconds": 60 * 60 * 30}
|
||||
expires_at_string: Optional[str]
|
||||
|
||||
@classmethod
|
||||
def get_expiry_time(cls) -> int | None:
|
||||
"""Calculate expiry time in seconds from kwargs."""
|
||||
time_multipliers = {"days": 86400, "hours": 3600, "minutes": 60, "seconds": 1}
|
||||
if cls.expires_at:
|
||||
return sum(
|
||||
int(cls.expires_at.get(unit, 0)) * multiplier
|
||||
for unit, multiplier in time_multipliers.items()
|
||||
)
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def merge(cls, set_values: List[Union[str, bytes]]) -> None:
|
||||
@@ -108,7 +120,7 @@ class RedisRow:
|
||||
# Add wildcard if first key was None
|
||||
if list_keys[0] is None:
|
||||
pattern = f"*{cls.delimiter}{pattern}"
|
||||
if '*' not in pattern:
|
||||
if "*" not in pattern:
|
||||
pattern = f"{pattern}:*"
|
||||
return pattern
|
||||
|
||||
@@ -182,6 +194,37 @@ class RedisRow:
|
||||
|
||||
cls.feed({**current_data, **add_dict})
|
||||
|
||||
@classmethod
|
||||
def save(cls):
|
||||
"""
|
||||
Save the data to Redis with optional expiration.
|
||||
|
||||
Raises:
|
||||
RedisKeyError: If key is not set
|
||||
RedisValueError: If value is not set
|
||||
"""
|
||||
import arrow
|
||||
from Services.Redis.conn import redis_cli
|
||||
|
||||
if not cls.key:
|
||||
raise RedisKeyError("Cannot save data without a key")
|
||||
if not cls.value:
|
||||
raise RedisValueError("Cannot save empty data")
|
||||
|
||||
if cls.expires_at:
|
||||
redis_cli.setex(name=cls.redis_key, time=cls.expires_at, value=cls.value)
|
||||
cls.expires_at_string = str(
|
||||
arrow.now()
|
||||
.shift(seconds=cls.get_expiry_time())
|
||||
.format("YYYY-MM-DD HH:mm:ss")
|
||||
)
|
||||
return cls.value
|
||||
|
||||
redis_cli.set(name=cls.redis_key, value=cls.value)
|
||||
cls.expires_at = None
|
||||
cls.expires_at_string = None
|
||||
return cls.value
|
||||
|
||||
@classmethod
|
||||
def remove(cls, key: str) -> None:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user