mirror of
https://github.com/long2ice/fastapi-cache.git
synced 2026-03-25 04:57:54 +00:00
Apply styling
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
from aiobotocore.session import get_session
|
from aiobotocore.session import get_session
|
||||||
|
|
||||||
from fastapi_cache.backends import Backend
|
from fastapi_cache.backends import Backend
|
||||||
@@ -31,20 +31,15 @@ class DynamoBackend(Backend):
|
|||||||
self.region = region
|
self.region = region
|
||||||
|
|
||||||
async def init(self):
|
async def init(self):
|
||||||
self.client = await self.session.create_client('dynamodb', region_name=self.region).__aenter__()
|
self.client = await self.session.create_client(
|
||||||
|
"dynamodb", region_name=self.region
|
||||||
|
).__aenter__()
|
||||||
|
|
||||||
async def close(self):
|
async def close(self):
|
||||||
self.client = await self.client.__aexit__(None, None, None)
|
self.client = await self.client.__aexit__(None, None, None)
|
||||||
|
|
||||||
async def get_with_ttl(self, key: str) -> Tuple[int, str]:
|
async def get_with_ttl(self, key: str) -> Tuple[int, str]:
|
||||||
response = await self.client.get_item(
|
response = await self.client.get_item(TableName=self.table_name, Key={"key": {"S": key}})
|
||||||
TableName=self.table_name,
|
|
||||||
Key={
|
|
||||||
"key": {
|
|
||||||
"S": key
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
if "Item" in response:
|
if "Item" in response:
|
||||||
value = response["Item"].get("value", {}).get("S")
|
value = response["Item"].get("value", {}).get("S")
|
||||||
@@ -61,33 +56,37 @@ class DynamoBackend(Backend):
|
|||||||
return 0, None
|
return 0, None
|
||||||
|
|
||||||
async def get(self, key) -> str:
|
async def get(self, key) -> str:
|
||||||
response = await self.client.get_item(
|
response = await self.client.get_item(TableName=self.table_name, Key={"key": {"S": key}})
|
||||||
TableName=self.table_name,
|
|
||||||
Key={
|
|
||||||
"key": {
|
|
||||||
"S": key
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
if "Item" in response:
|
if "Item" in response:
|
||||||
return response["Item"].get("value", {}).get("S")
|
return response["Item"].get("value", {}).get("S")
|
||||||
|
|
||||||
async def set(self, key: str, value: str, expire: int = None):
|
async def set(self, key: str, value: str, expire: int = None):
|
||||||
ttl = { "ttl": { "N": str(int((datetime.datetime.now() + datetime.timedelta(seconds=expire)).timestamp())) } } if expire else {}
|
ttl = (
|
||||||
|
{
|
||||||
|
"ttl": {
|
||||||
|
"N": str(
|
||||||
|
int(
|
||||||
|
(
|
||||||
|
datetime.datetime.now() + datetime.timedelta(seconds=expire)
|
||||||
|
).timestamp()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if expire
|
||||||
|
else {}
|
||||||
|
)
|
||||||
|
|
||||||
response = await self.client.put_item(
|
response = await self.client.put_item(
|
||||||
TableName=self.table_name,
|
TableName=self.table_name,
|
||||||
Item={**{
|
Item={
|
||||||
"key": {
|
**{
|
||||||
"S": key
|
"key": {"S": key},
|
||||||
|
"value": {"S": value},
|
||||||
},
|
},
|
||||||
"value": {
|
**ttl,
|
||||||
"S": value
|
|
||||||
},
|
},
|
||||||
}, **ttl
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
async def clear(self, namespace: str = None, key: str = None) -> int:
|
async def clear(self, namespace: str = None, key: str = None) -> int:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user