kocraft-backend/Craft/controller/merge.py

39 lines
1.7 KiB
Python
Raw Normal View History

2024-07-15 08:47:42 +00:00
import sentry_sdk
from Craft.module.logging import Logger
from Craft.model.merge import MergeOutput, MergeInput
from Craft.module.ml import Engine
from Craft.database.redis.caching import RedisCaching
from Craft.database.sqlite.data import SqliteDatabase
class MergeController:
def __init__(self):
self.logger = Logger()
self.engine = Engine()
self.redis_caching = RedisCaching()
self.sqlite_database = SqliteDatabase()
async def merge(self, model: MergeInput) -> MergeOutput:
try:
cached = await self.redis_caching.cache_get(model.first_word, model.second_word)
if cached:
return MergeOutput(status=1, response=cached)
data = await self.engine.generate(model.first_word, model.second_word)
await self.redis_caching.cache_set(model.first_word, model.second_word, data)
await self.sqlite_database.sets(model.first_word, model.second_word, data.emoji, data.word)
return MergeOutput(status=1, response={"emoji": data.emoji, "word": data.word})
except Exception as e:
self._log_and_capture_exception(e, "Error in Merge Controller")
return MergeOutput(status=-1, error=str(e))
async def increasevalue_backgroundtasks(self, first_word: str, second_word: str) -> None:
try:
await self.sqlite_database.update(first_word, second_word)
except Exception as e:
self._log_and_capture_exception(e, "Error in Increase Value BackgroundTasks")
raise
def _log_and_capture_exception(self, exception: Exception, message: str) -> None:
self.logger.error(f"{message}: {exception}")
sentry_sdk.capture_exception(exception)