Переделал нахуй всё
This commit is contained in:
74
databases/db_config.py
Normal file
74
databases/db_config.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from motor.motor_asyncio import AsyncIOMotorClient
|
||||
from databases.model import Base
|
||||
from utils.LogCon import setup_logger, load_config
|
||||
|
||||
# Загружаем конфигурацию
|
||||
config = load_config()
|
||||
|
||||
# Настройки PostgreSQL
|
||||
postgres_user = config['postgreSQL']['username']
|
||||
postgres_password = config['postgreSQL']['password_DB']
|
||||
postgres_host = "postgres" # Хост для PostgreSQL в Docker
|
||||
POSTGRES_DSN = f"postgresql+asyncpg://{postgres_user}:{postgres_password}@{postgres_host}:5432/bot_db"
|
||||
|
||||
# Создание движка для PostgreSQL
|
||||
postgres_engine = create_async_engine(POSTGRES_DSN, echo=False)
|
||||
AsyncSessionLocal = sessionmaker(bind=postgres_engine, class_=AsyncSession, expire_on_commit=False)
|
||||
|
||||
# Настройки MongoDB
|
||||
mongodb_user = config['mongodb']['mongodb_username']
|
||||
mongodb_password = config['mongodb']['mongodb_password']
|
||||
mongodb_host = "mongodb" # Хост для MongoDB в Docker
|
||||
mongodb_uri = f"mongodb://{mongodb_user}:{mongodb_password}@{mongodb_host}:27017"
|
||||
database_name = config['mongodb']['database_name']
|
||||
|
||||
# Создание клиента MongoDB
|
||||
mongo_client = AsyncIOMotorClient(mongodb_uri)
|
||||
mongo_db = mongo_client[database_name]
|
||||
|
||||
# Инициализация PostgreSQL
|
||||
async def init_postgresql():
|
||||
"""
|
||||
Инициализация подключения к PostgreSQL.
|
||||
"""
|
||||
try:
|
||||
async with postgres_engine.begin() as conn:
|
||||
await conn.run_sync(Base.metadata.create_all)
|
||||
print("PostgreSQL connected.")
|
||||
except Exception as e:
|
||||
print(f"Failed to connect to PostgreSQL: {e}")
|
||||
|
||||
# Инициализация MongoDB
|
||||
async def init_mongodb():
|
||||
"""
|
||||
Проверка подключения к MongoDB.
|
||||
"""
|
||||
try:
|
||||
# Проверяем подключение к MongoDB
|
||||
await mongo_client.admin.command("ping")
|
||||
print("MongoDB connected.")
|
||||
except Exception as e:
|
||||
print(f"Failed to connect to MongoDB: {e}")
|
||||
|
||||
# Получение сессии PostgreSQL
|
||||
async def get_postgres_session():
|
||||
"""
|
||||
Асинхронный генератор сессий PostgreSQL.
|
||||
"""
|
||||
async with AsyncSessionLocal() as session:
|
||||
yield session
|
||||
|
||||
# Закрытие соединений
|
||||
async def close_connections():
|
||||
"""
|
||||
Закрытие всех соединений с базами данных.
|
||||
"""
|
||||
# Закрытие PostgreSQL
|
||||
await postgres_engine.dispose()
|
||||
print("PostgreSQL connection closed.")
|
||||
|
||||
# Закрытие MongoDB
|
||||
mongo_client.close()
|
||||
print("MongoDB connection closed.")
|
||||
Reference in New Issue
Block a user