runabot/Christmas/Database/__init__.py
2023-12-02 19:42:36 +09:00

84 lines
3.7 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
async def register_arcade(guild_id: int, guild_name: str, region):
conn = await MongoDBClient().connect()
await conn.arcade.insert_one({"_id": guild_id, "guild_name": guild_name, "region": region, "normal_snowball": 10000})
async def update_guild_name(guild_id: int, guild_name: str):
conn = await MongoDBClient().connect()
await conn.arcade.update_one({"_id": guild_id}, {"$set": {"guild_name": guild_name}})
async def get_arcade(guild_id: int):
conn = await MongoDBClient().connect()
return await conn.arcade.find_one({"_id": guild_id})