Source code for pyArango.index

import json
from .theExceptions import (CreationError, DeletionError, UpdateError)

[docs]class Index(object): """An index on a collection's fields. Indexes are meant to de created by ensureXXX functions of Collections. Indexes have a .infos dictionary that stores all the infos about the index""" def __init__(self, collection, infos = None, creationData = None): self.collection = collection self.connection = self.collection.database.connection self.infos = None self.active = False if infos: self.infos = infos elif creationData: self._create(creationData) def getURL(self): if self.infos: return "%s/%s" % (self.getIndexesURL(), self.infos["id"]) return None def getIndexesURL(self): return "%s/index" % self.collection.database.getURL() def _create(self, postData, force=False): """Creates an index of any type according to postData""" if self.infos is None or not self.active or force: r = self.connection.session.post(self.getIndexesURL(), params = {"collection" : self.collection.name}, data = json.dumps(postData, default=str)) data = r.json() if (r.status_code >= 400) or data['error']: raise CreationError(data['errorMessage'], data) self.infos = data self.active = True
[docs] def restore(self): """restore and index that has been previously deleted""" self._create(self.infos, force=True)
[docs] def delete(self): """Delete the index""" r = self.connection.session.delete(self.getURL()) data = r.json() if (r.status_code != 200 and r.status_code != 202) or data['error']: raise DeletionError(data['errorMessage'], data) self.active = False
def __repr__(self): return "<Index of type %s>" % self.infos["type"]