import logging

from sqlalchemy import select
from .models import Users
from .engine import async_session



async def get_user_by_user_id(user_id: int) -> Users | None:
    async with async_session() as session:
        result = await session.execute(select(Users).where(Users.user_id == user_id))
        return result.scalars().first()


async def add_user_if_not_exists(user_id: int) -> Users:
    existing_user = await get_user_by_user_id(user_id)
    if existing_user:
        logging.info(f"Юсер {user_id} уже существует")
        return existing_user

    async with async_session() as session:
        async with session.begin():
            user = Users(user_id=user_id)
            session.add(user)
        logging.info(f"Юсер {user_id} успешно добавлен")
        return user
