40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
from cachetools import TTLCache
|
|
|
|
import settings
|
|
from mongo import mongo
|
|
|
|
cache = TTLCache(settings.CACHE_SIZE, settings.CACHE_TTL)
|
|
|
|
|
|
def get_chat_info(chat_id: int) -> dict:
|
|
cached_info = cache.get(chat_id)
|
|
if cached_info is not None:
|
|
return cached_info
|
|
mongo_info = mongo.chats_collection.find_one({"chat_id": chat_id})
|
|
if mongo_info is not None:
|
|
cache[chat_id] = mongo_info
|
|
return mongo_info
|
|
chat_info = {"chat_id": chat_id, "state": "default", "probability": 100}
|
|
mongo.chats_collection.insert_one(chat_info)
|
|
cache[chat_id] = chat_info
|
|
return chat_info
|
|
|
|
|
|
def set_values(chat_id: int, **values):
|
|
cached_info = cache.get(chat_id)
|
|
if cached_info is None:
|
|
mongo_info = mongo.chats_collection.find_one({"chat_id": chat_id})
|
|
if mongo_info is None:
|
|
chat_info = {"chat_id": chat_id, "state": "default", "probability": 100}
|
|
chat_info.update(values)
|
|
mongo.chats_collection.insert_one(chat_info)
|
|
cache[chat_id] = chat_info
|
|
else:
|
|
mongo.chats_collection.update_one({"chat_id": chat_id}, {"$set": values})
|
|
mongo_info = dict(mongo_info)
|
|
mongo_info.update(values)
|
|
cache[chat_id] = mongo_info
|
|
else:
|
|
cached_info.update(values)
|
|
mongo.chats_collection.update_one({"chat_id": chat_id}, {"$set": values})
|