"""
This module defines the interface every store needs to adhere to.
"""
from abc import ABCMeta, abstractmethod
[docs]class IStore:
"""
This interface handles object-storage.
Implementations of this interface can be made for different object-storages
Currently this interface is only implemented for PairTreeFileSystemStore
"""
__metaclass__ = ABCMeta
[docs] @abstractmethod
def create_object(self, container_key, object_key, object_data):
"""
Save a new object in the data store
:param str container_key: Key of the container to create an object in.
:param str object_key: Key of the object to create.
:param str object_data: The data for the object to create.
:raises augeias.stores.error.NotFoundException: When the container could not be found.
"""
[docs] @abstractmethod
def delete_object(self, container_key, object_key):
"""
Delete an object from the data store.
:param str container_key: Key of the container that the object lives in.
:param str object_key: Key of the object to delete.
:raises augeias.stores.error.NotFoundException: When the object or container could not be found.
"""
[docs] @abstractmethod
def get_object(self, container_key, object_key):
"""
Retrieve an object from the data store.
:param str container_key: Key of the container that the object lives in.
:param str object_key: Key of the object to retrieve.
:raises augeias.stores.error.NotFoundException: When the object or container could not be found.
"""
[docs] @abstractmethod
def get_object_info(self, container_key, object_key):
"""
Retrieve object info (mimetype, size, time last modification) from the data store.
:param str container_key: Key of the container that the object lives in.
:param str object_key: Key of the object to retrieve.
:raises augeias.stores.error.NotFoundException: When the object or container could not be found.
"""
[docs] @abstractmethod
def update_object(self, container_key, object_key, object_data):
"""
Update an object in the data store.
:param str container_key: Key of the container that the object lives in.
:param str object_key: Key of the object to update.
:param str object_data: New data for the object.
:raises augeias.stores.error.NotFoundException: When the object or container could not be found.
"""
[docs] @abstractmethod
def list_object_keys_for_container(self, container_key):
"""
List all object keys for a container in the data store.
:param str container_key: Key of the container to list the objects for.
:returns: A list of container keys.
:rtype: lst
:raises augeias.stores.error.NotFoundException: When the container could not be found.
"""
[docs] @abstractmethod
def get_container_data(self, container_key, translations=None):
"""
Find a container and return a zip file of its contents.
:param container_key: Key of the container which must be retrieved.
:param translations: Dict of object IDs and file names to use for them.
:return: a zip file containing all files of the container.
"""
[docs] @abstractmethod
def create_container(self, container_key):
"""
Create a new container in the data store.
:param str container_key: Key of the container to create.
"""
[docs] @abstractmethod
def delete_container(self, container_key):
"""
Delete a container and all it's objects in the data store.
:param str container_key: Key of the container to delete.
:raises augeias.stores.error.NotFoundException: When the container could not be found.
"""