import backend_fastapi.models as models from .database import async_session import backend_fastapi.schemas as schemas from sqlalchemy import select, update, delete from fastapi.exceptions import HTTPException async def add_role(role: schemas.RoleCreate): async with async_session() as session: model = models.Role(name = role.name) session.add(model) await session.flush() await session.commit() return model async def get_role_all(): async with async_session() as session: result = await session.scalars(select(models.Role)) return result.all() async def delete_role(id: int): async with async_session() as session: data = await session.scalars(select(models.Role).filter(models.Role.id == id)) result = data.one_or_none() if not result: raise HTTPException(status_code=404, detail="Item not found") await session.execute(delete(models.Role).filter(models.Role.id == id)) await session.commit() return result async def update_role(role: schemas.Role, id: int): async with async_session() as session: query = update(models.Role).filter(models.Role.id == id).values(name = role.name) await session.execute(query) await session.commit() return {f"{id=} был обновлен"} async def add_user(user: schemas.UserCreate): async with async_session() as session: model = models.User( **user.model_dump() ) session.add(model) await session.flush() await session.commit() return model