Files
scatcher/controller/history_controller.py

81 lines
2.4 KiB
Python

from fastapi import Response, status
from schema.answer import Answer
from schema.request_data import RequestData
from manager.history import History
from controller.base_controller import BaseController
from schema.status import Status
class HistoryController(BaseController):
async def history(
self,
response: Response,
id: int | None = None,
namespace: str = "requests",
) -> Answer | RequestData | list[RequestData]:
if not self.check_namespace(namespace=namespace):
response.status_code = status.HTTP_400_BAD_REQUEST
return Answer(
status=Status.error,
message="Invalid namespace name provided.",
)
history = History(namespace=namespace)
if id is not None:
item = history.get(id)
if item is None:
return Answer(
status=Status.error,
message="No requests found.",
)
return RequestData(**item)
items = history.all()
if items is None:
return Answer(
status=Status.error,
message="No requests found.",
)
return [RequestData(**d) for d in items]
async def last_requests(
self,
response: Response,
namespace: str = "requests",
) -> Answer | RequestData:
if not self.check_namespace(namespace=namespace):
response.status_code = status.HTTP_400_BAD_REQUEST
return Answer(
status=Status.error,
message="Invalid namespace name provided.",
)
last = History(namespace=namespace).last()
if last is None:
return Answer(
status=Status.error,
message="No requests found.",
)
return RequestData(**last)
async def clear_history(
self,
response: Response,
namespace: str = "requests",
) -> Answer:
if not self.check_namespace(namespace=namespace):
response.status_code = status.HTTP_400_BAD_REQUEST
return Answer(
status=Status.error,
message="Invalid namespace name provided.",
)
History(namespace=namespace).clear()
return Answer(
status=Status.success,
message="History cleared.",
)