async def METHOD_NAME(
    self, connection: SAConnection, *, node_id: uuid.UUID, **values
) -> ProjectNode:
    """update a node in the current project
    NOTE: Do not use this in an asyncio.gather call as this will fail!
    Raises:
        ProjectsNodesNodeNotFound: _description_
    """
    update_stmt = (
        projects_nodes.METHOD_NAME()
        .values(**values)
        .where(
            (projects_nodes.c.project_uuid == f"{self.project_uuid}")
            & (projects_nodes.c.node_id == f"{node_id}")
        )
        .returning(
            *[c for c in projects_nodes.c if c is not projects_nodes.c.project_uuid]
        )
    )
    result = await connection.execute(update_stmt)
    row = await result.first()
    if not row:
        msg = f"Node with {node_id} not found"
        raise ProjectNodesNodeNotFound(msg)
    assert row  # nosec
    return ProjectNode.from_row(row)