34 lines
905 B
Python
34 lines
905 B
Python
from abc import ABCMeta, abstractmethod
|
||
from typing import Optional
|
||
|
||
|
||
class CacheRepository(metaclass=ABCMeta):
|
||
@abstractmethod
|
||
async def get(self, key: str) -> Optional[str]:
|
||
pass
|
||
|
||
@abstractmethod
|
||
async def set(self, key: str, data: str, _exp_min: Optional[int] = None):
|
||
pass
|
||
|
||
@abstractmethod
|
||
async def delete(self, key: str):
|
||
pass
|
||
|
||
|
||
# TODO: сделать через общий кеш, например, redis. Работу с редис вынести в infra
|
||
class LocalCacheRepository(CacheRepository):
|
||
_data: dict[str, str]
|
||
|
||
def __init__(self) -> None:
|
||
self._data = {}
|
||
|
||
async def get(self, key: str) -> Optional[str]:
|
||
return self._data.get(key)
|
||
|
||
async def set(self, key: str, data: str, _exp_min: Optional[int] = None):
|
||
self._data[key] = data
|
||
|
||
async def delete(self, key: str):
|
||
del self._data[key]
|