async def METHOD_NAME(
    app: web.Application,
    user_id: UserID,
    wallet_id: WalletID,
) -> UserWalletDB:
    stmt = (
        select(*_SELECTION_ARGS)
        .select_from(_JOIN_TABLES)
        .where(
            (user_to_groups.c.uid == user_id)
            & (user_to_groups.c.access_rights["read"].astext == "true")
            & (wallets.c.wallet_id == wallet_id)
        )
        .group_by(
            wallets.c.wallet_id,
            wallets.c.name,
            wallets.c.description,
            wallets.c.owner,
            wallets.c.thumbnail,
            wallets.c.status,
            wallets.c.created,
            wallets.c.modified,
        )
    )
    async with get_database_engine(app).acquire() as conn:
        result = await conn.execute(stmt)
        row = await result.first()
        if row is None:
            raise WalletAccessForbiddenError(
                reason=f"User does not have access to the wallet {wallet_id}. Or wallet does not exist.",
            )
        return parse_obj_as(UserWalletDB, row)