Delete the persistent identifier.

        If the persistent identifier haven't been registered yet, it is
        removed from the database. Otherwise, it's marked as
        :attr:`invenio_pidstore.models.PIDStatus.DELETED`.

        :returns: `True` if the PID is successfully removed.

def delete(self):
        """Delete the persistent identifier.

        If the persistent identifier haven't been registered yet, it is
        removed from the database. Otherwise, it's marked as
        :attr:`invenio_pidstore.models.PIDStatus.DELETED`.

        :returns: `True` if the PID is successfully removed.
        """
        removed = False
        try:
            with db.session.begin_nested():
                if self.is_new():
                    # New persistent identifier which haven't been registered
                    # yet.
                    db.session.delete(self)
                    removed = True
                else:
                    self.status = PIDStatus.DELETED
                    db.session.add(self)
        except SQLAlchemyError:
            logger.exception("Failed to delete PID.", extra=dict(pid=self))
            raise

        if removed:
            logger.info("Deleted PID (removed).", extra=dict(pid=self))
        else:
            logger.info("Deleted PID.", extra=dict(pid=self))
        return True