Skip to content

Commit 171c313

Browse files
committed
Add middleware/permssion/cache helper test codes
1 parent f64eda3 commit 171c313

21 files changed

Lines changed: 403 additions & 18 deletions

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ repos:
2828
exclude: migrations/
2929
additional_dependencies:
3030
[
31+
"redis==4.5.1",
3132
"types-redis==4.6.0",
3233
"types-ujson==5.9.0",
3334
]

core/fastapi/dependencies/permission.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class BasePermission(ABC):
2121

2222
@abstractmethod
2323
async def has_permission(self, request: Request) -> bool:
24-
pass
24+
"""has permssion"""
2525

2626

2727
class IsAuthenticated(BasePermission):

core/helpers/cache/base/backend.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
class BaseBackend(ABC):
66
@abstractmethod
77
async def get(self, *, key: str) -> Any:
8-
...
8+
"""Get"""
99

1010
@abstractmethod
1111
async def set(self, *, response: Any, key: str, ttl: int = 60) -> None:
12-
...
12+
"""Set"""
1313

1414
@abstractmethod
1515
async def delete_startswith(self, *, value: str) -> None:
16-
...
16+
"""Delete starts with"""

core/helpers/cache/base/key_maker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
class BaseKeyMaker(ABC):
66
@abstractmethod
77
async def make(self, *, function: Callable, prefix: str) -> str:
8-
...
8+
"""Base key maker"""

core/helpers/cache/redis_backend.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,25 @@
44
import ujson
55

66
from core.helpers.cache.base import BaseBackend
7-
from core.helpers.redis import redis
7+
from core.helpers.redis import redis_client
88

99

1010
class RedisBackend(BaseBackend):
1111
async def get(self, *, key: str) -> Any:
12-
result = await redis.get(key)
12+
result = await redis_client.get(key)
1313
if not result:
1414
return
1515

16-
try:
17-
return ujson.loads(result.decode("utf8"))
18-
except UnicodeDecodeError:
19-
return pickle.loads(result)
16+
return ujson.loads(result)
2017

2118
async def set(self, *, response: Any, key: str, ttl: int = 60) -> None:
2219
if isinstance(response, dict):
2320
response = ujson.dumps(response)
24-
elif isinstance(response, object):
21+
else:
2522
response = pickle.dumps(response)
2623

27-
await redis.set(name=key, value=response, ex=ttl)
24+
await redis_client.set(name=key, value=response, ex=ttl)
2825

2926
async def delete_startswith(self, *, value: str) -> None:
30-
async for key in redis.scan_iter(f"{value}::*"):
31-
await redis.delete(key)
27+
async for key in redis_client.scan_iter(f"{value}*"):
28+
await redis_client.delete(key)

core/helpers/redis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import redis.asyncio as aioredis
1+
from redis import asyncio as redis
22

33
from core.config import config
44

5-
redis = aioredis.from_url(url=f"redis://{config.REDIS_HOST}")
5+
redis_client = redis.from_url(url=f"redis://{config.REDIS_HOST}", decode_responses=True)

poetry.lock

Lines changed: 30 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ httpx = "^0.26.0"
2929

3030
[tool.poetry.group.dev.dependencies]
3131
pytest = "^7.4.4"
32+
types-redis = "^4.6.0.20240106"
3233

3334
[tool.coverage.run]
3435
omit=["tests/*", "test_*.py", "migrations/*"]

tests/core/__init__.py

Whitespace-only changes.

tests/core/exceptions/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)