from sqlalchemy import update, select from sqlalchemy.exc import SQLAlchemyError from app.dao.base import BaseDAO from app.database import async_session_maker from app.users.chat.models import UsersXChats from app.users.models import Users class UserDAO(BaseDAO): model = Users @classmethod async def change_data(cls, user_id: int, **data_to_change): query = update(Users).where(Users.id == user_id).values(**data_to_change) async with async_session_maker() as session: await session.execute(query) await session.commit() query = select(Users.username).where(Users.id == user_id) result = await session.execute(query) return result.scalar() @classmethod async def get_user_role(cls, user_id: int): query = select(Users.role).where(Users.id == user_id) async with async_session_maker() as session: result = await session.execute(query) return result.scalar() @classmethod async def get_user_rights(cls, user_id: int): query = select(UsersXChats.__table__.columns).where(UsersXChats.user_id == user_id) async with async_session_maker() as session: result = await session.execute(query) print(result) return result.mappings().all() @classmethod async def get_user_avatar(cls, user_id: int): query = select(Users.avatar_image).where(Users.id == user_id) async with async_session_maker() as session: result = await session.execute(query) return result.scalar()