Controllers added updated implementations and tests awaits

This commit is contained in:
2025-03-31 23:51:27 +03:00
parent 2d32842782
commit 5d30bc2701
20 changed files with 2188 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
from typing import Union, Dict, List, Optional, Any
from base import RedisRow
class RedisResponse:
"""Base class for Redis response handling."""
def __init__(
self,
status: bool,
message: str,
data: Any = None,
error: Optional[str] = None,
):
self.status = status
self.message = message
self.data = data
if isinstance(data, Dict):
self.data_type = "dict"
elif isinstance(data, list):
self.data_type = "list"
elif isinstance(data, RedisRow):
self.data_type = "row"
elif data is None:
self.data_type = None
self.error = error
def as_dict(self) -> Dict:
data = self.all
main_dict = {
"status": self.status, "message": self.message,
"count": self.count, "dataType": getattr(self, "data_type", None),
}
if isinstance(data, RedisRow):
dict_return = {data.keys: data.row}
dict_return.update(dict(main_dict))
return dict_return
elif isinstance(data, list):
dict_return = {}
for row in data:
if isinstance(row, RedisRow):
dict_return.update({row.keys: row.row})
dict_return.update(dict(main_dict))
return dict_return
return main_dict
@property
def all(self) -> Union[Optional[List[RedisRow]]]:
return self.data or []
@property
def count(self) -> int:
row = self.all
if isinstance(row, list):
return len(row)
elif isinstance(row, RedisRow):
return 1
return 0
@property
def first(self) -> Union[RedisRow, Dict, None]:
if self.data:
if isinstance(self.data, list):
if isinstance(self.data[0], RedisRow):
return self.data[0].row
return self.data[0]
elif isinstance(self.data, RedisRow):
return self.data.row
self.status = False
return None