from motor.motor_asyncio import AsyncIOMotorClient from Christmas.config import ChristmasConfig class MongoDBClient: def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.config = ChristmasConfig() self.client = AsyncIOMotorClient(self.config.DATABASE["HOST"], int(self.config.DATABASE["PORT"]), username=self.config.DATABASE["USERNAME"], password=self.config.DATABASE["PASSWORD"])[self.config.DATABASE["DATABASE"]] async def connect(self): return self.client class database: async def get_guild(guild_id: int) -> dict: conn = await MongoDBClient().connect() return await conn.guild.find_one({"_id": guild_id}) async def register_guild(guild_id: int) -> None: conn = await MongoDBClient().connect() await conn.guild.insert_one({"_id": guild_id}) async def insert_mail(send_user_id: int, user_id: int, mail_title: str, mail_content: str): try: conn = await MongoDBClient().connect() mail_title = f"""{mail_title}""" mail_content = f"""{mail_content}""" if await conn.mail.find_one({"_id": user_id}) == None: await conn.mail.insert_one({"_id": user_id, "mails": [{"userid": send_user_id, "title": mail_title, "content": mail_content}]}) else: await conn.db.mail.update_one({"_id": user_id}, {"$push": {"mails": {"userid": send_user_id, "title": mail_title, "content": mail_content}}}) except Exception as e: print(e) async def get_mail(user_id: int) -> dict: conn = await MongoDBClient().connect() return await conn.mail.find_one({"_id": user_id})