From ae999ede139f5fa5601ffb7c55979608b112d274 Mon Sep 17 00:00:00 2001 From: Máximo Cuadros Date: Fri, 12 Aug 2016 19:11:27 +0200 Subject: storage: Storage entity support, and DotGit support for References --- core/storage.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 core/storage.go (limited to 'core/storage.go') diff --git a/core/storage.go b/core/storage.go new file mode 100644 index 0000000..70a47e6 --- /dev/null +++ b/core/storage.go @@ -0,0 +1,34 @@ +package core + +// Storage storage of objects and references +type Storage interface { + ObjectStorage() (ObjectStorage, error) + ReferenceStorage() (ReferenceStorage, error) +} + +// ObjectStorage generic storage of objects +type ObjectStorage interface { + NewObject() Object + Set(Object) (Hash, error) + Get(Hash) (Object, error) + Iter(ObjectType) (ObjectIter, error) +} + +// ObjectIter is a generic closable interface for iterating over objects. +type ObjectIter interface { + Next() (Object, error) + Close() +} + +// ReferenceStorage generic storage of references +type ReferenceStorage interface { + Set(*Reference) error + Get(ReferenceName) (*Reference, error) + Iter() (ReferenceIter, error) +} + +// ReferenceIter is a generic closable interface for iterating over references +type ReferenceIter interface { + Next() (*Reference, error) + Close() +} -- cgit