71 lines
3.1 KiB
Python
71 lines
3.1 KiB
Python
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, user_name: str, 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, "username": user_name, "title": mail_title, "content": mail_content, "edited": False}]})
|
|
else:
|
|
result = await conn.mail.update_one({"_id": user_id}, {"$push": {"mails": {"userid": send_user_id, "username": user_name, "title": mail_title, "content": mail_content, "edited": False}}})
|
|
print(result)
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
async def update_inserted_mail(send_user_id: int, user_id: int, mail_title: str, mail_content: str):
|
|
try:
|
|
conn = await MongoDBClient().connect()
|
|
await conn.mail.update_one({"_id": user_id, "mails.userid": send_user_id}, {"$set": {"mails.$.title": mail_title, "mails.$.content": mail_content, "mails.$.edited": True}})
|
|
return True
|
|
except Exception as e:
|
|
print(e)
|
|
return None
|
|
|
|
async def get_instered_mail_edited(send_user_id: int, user_id: int):
|
|
try:
|
|
conn = await MongoDBClient().connect()
|
|
data = await conn.mail.find_one({"_id": user_id})
|
|
if data == None: return None
|
|
for mail in data["mails"]:
|
|
if mail["userid"] == send_user_id:
|
|
return mail["edited"]
|
|
except Exception as e:
|
|
print(e)
|
|
return None
|
|
|
|
async def get_mail(user_id: int):
|
|
conn = await MongoDBClient().connect()
|
|
data = await conn.mail.find_one({"_id": user_id})
|
|
if data == None: return None
|
|
return data
|
|
|
|
async def get_mail_user(one_user_id: int, two_user_id: int):
|
|
conn = await MongoDBClient().connect()
|
|
data = await conn.mail.find_one({"_id": one_user_id})
|
|
if data == None: return False
|
|
for mail in data["mails"]:
|
|
if mail["userid"] == two_user_id:
|
|
return True
|
|
|