This repository has been archived on 2025-09-07. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
MouseyBot/Mousey/Database/engine.py
2025-08-22 11:37:26 +07:00

43 lines
1.1 KiB
Python

import os
from dotenv import load_dotenv
from loguru import logger
from sqlalchemy.ext.asyncio import (
AsyncSession,
async_sessionmaker,
create_async_engine,
)
from Mousey.Misc import CONFIG_FILE_PATH
from .Models import Base
from .utils import add_main_admin
load_dotenv(CONFIG_FILE_PATH)
engine = create_async_engine(url=os.getenv("DB_URL"), echo=True)
session_maker = async_sessionmaker(
bind=engine, class_=AsyncSession, expire_on_commit=False
)
@logger.catch
async def create_db():
"""
Загрузка или создание новой базы данных.
"""
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
logger.debug("База данных загружена.")
async with session_maker() as session:
await add_main_admin(session)
@logger.catch
async def drop_db():
"""
Полная очистка базы данных.
"""
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.drop_all)
logger.warning("База данных очищена.")