# DATABASE FILE from typing import List, Any import asyncpg from customs.log import AuroraLogger db_logger = AuroraLogger("AuroraDBLog", "logs/db.log") class AuroraDatabase: def __init__(self, database: str, user: str, password: str) -> None: self._pool = None self._db: str = database self._user: str = user self._password: str = password self._pool: asyncpg.pool.Pool async def create_conn(self): self._pool = await asyncpg.create_pool(database=self._db, user=self._user, password=self._password) # print("connected") db_logger.info(f"Successfully connected to database {self._db}") await self._create_tables() async def execute(self, *args, **kwargs) -> str: return await self._pool.execute(*args, **kwargs) async def executemany(self, *args, **kwargs) -> None: return await self._pool.executemany(*args, **kwargs) async def fetch(self, *args, **kwargs) -> List[asyncpg.Record]: return await self._pool.fetch(*args, **kwargs) async def fetch_row(self, *args, **kwargs) -> asyncpg.Record: return await self._pool.fetchrow(*args, **kwargs) async def fetch_val(self, *args, **kwargs) -> Any: return await self._pool.fetchval(*args, **kwargs) async def _create_tables(self) -> None: # query = """CREATE TABLE IF NOT EXISTS rpg( # user_id bigint PRIMARY KEY NOT NULL UNIQUE, # username text, # base_stats JSONB, # player_data JSONB # )""" # query = """ALTER TABLE rpg ADD player_data JSONB""" # await self.execute(query) pass