aboutsummaryrefslogtreecommitdiff
path: root/object/stored
diff options
context:
space:
mode:
Diffstat (limited to 'object/stored')
-rw-r--r--object/stored/blob.go35
-rw-r--r--object/stored/commit.go32
-rw-r--r--object/stored/object.go14
-rw-r--r--object/stored/objectstored.go32
-rw-r--r--object/stored/stored.go2
-rw-r--r--object/stored/tree.go32
6 files changed, 147 insertions, 0 deletions
diff --git a/object/stored/blob.go b/object/stored/blob.go
new file mode 100644
index 00000000..4b3b6b74
--- /dev/null
+++ b/object/stored/blob.go
@@ -0,0 +1,35 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredBlob is a parsed blob paired with its storage ID.
+//
+// This Blob object is fully materialized in memory.
+// Consider using objectstore/Store.ReadReaderContent.
+type StoredBlob struct {
+ id objectid.ObjectID
+ blob *object.Blob
+}
+
+// NewStoredBlob creates one stored blob wrapper.
+func NewStoredBlob(id objectid.ObjectID, blob *object.Blob) *StoredBlob {
+ return &StoredBlob{id: id, blob: blob}
+}
+
+// ID returns the object ID this blob was loaded from.
+func (stored *StoredBlob) ID() objectid.ObjectID {
+ return stored.id
+}
+
+// Object returns the parsed blob as the generic object interface.
+func (stored *StoredBlob) Object() object.Object {
+ return stored.blob
+}
+
+// Blob returns the parsed blob value.
+func (stored *StoredBlob) Blob() *object.Blob {
+ return stored.blob
+}
diff --git a/object/stored/commit.go b/object/stored/commit.go
new file mode 100644
index 00000000..880ba40c
--- /dev/null
+++ b/object/stored/commit.go
@@ -0,0 +1,32 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredCommit is a parsed commit paired with its storage ID.
+type StoredCommit struct {
+ id objectid.ObjectID
+ commit *object.Commit
+}
+
+// NewStoredCommit creates one stored commit wrapper.
+func NewStoredCommit(id objectid.ObjectID, commit *object.Commit) *StoredCommit {
+ return &StoredCommit{id: id, commit: commit}
+}
+
+// ID returns the object ID this commit was loaded from.
+func (stored *StoredCommit) ID() objectid.ObjectID {
+ return stored.id
+}
+
+// Object returns the parsed commit as the generic object interface.
+func (stored *StoredCommit) Object() object.Object {
+ return stored.commit
+}
+
+// Commit returns the parsed commit value.
+func (stored *StoredCommit) Commit() *object.Commit {
+ return stored.commit
+}
diff --git a/object/stored/object.go b/object/stored/object.go
new file mode 100644
index 00000000..c0a0db8f
--- /dev/null
+++ b/object/stored/object.go
@@ -0,0 +1,14 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredObject is a parsed object paired with its storage ID.
+type StoredObject interface {
+ // ID returns the object ID the object was loaded from.
+ ID() objectid.ObjectID
+ // Object returns the parsed object value.
+ Object() object.Object
+}
diff --git a/object/stored/objectstored.go b/object/stored/objectstored.go
new file mode 100644
index 00000000..ff7d516a
--- /dev/null
+++ b/object/stored/objectstored.go
@@ -0,0 +1,32 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredTag is a parsed tag paired with its storage ID.
+type StoredTag struct {
+ id objectid.ObjectID
+ tag *object.Tag
+}
+
+// NewStoredTag creates one stored tag wrapper.
+func NewStoredTag(id objectid.ObjectID, tag *object.Tag) *StoredTag {
+ return &StoredTag{id: id, tag: tag}
+}
+
+// ID returns the object ID this tag was loaded from.
+func (stored *StoredTag) ID() objectid.ObjectID {
+ return stored.id
+}
+
+// Object returns the parsed tag as the generic object interface.
+func (stored *StoredTag) Object() object.Object {
+ return stored.tag
+}
+
+// Tag returns the parsed tag value.
+func (stored *StoredTag) Tag() *object.Tag {
+ return stored.tag
+}
diff --git a/object/stored/stored.go b/object/stored/stored.go
new file mode 100644
index 00000000..588b1726
--- /dev/null
+++ b/object/stored/stored.go
@@ -0,0 +1,2 @@
+// Package stored wraps parsed objects with their storage object IDs.
+package stored
diff --git a/object/stored/tree.go b/object/stored/tree.go
new file mode 100644
index 00000000..a54c1f6e
--- /dev/null
+++ b/object/stored/tree.go
@@ -0,0 +1,32 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredTree is a parsed tree paired with its storage ID.
+type StoredTree struct {
+ id objectid.ObjectID
+ tree *object.Tree
+}
+
+// NewStoredTree creates one stored tree wrapper.
+func NewStoredTree(id objectid.ObjectID, tree *object.Tree) *StoredTree {
+ return &StoredTree{id: id, tree: tree}
+}
+
+// ID returns the object ID this tree was loaded from.
+func (stored *StoredTree) ID() objectid.ObjectID {
+ return stored.id
+}
+
+// Object returns the parsed tree as the generic object interface.
+func (stored *StoredTree) Object() object.Object {
+ return stored.tree
+}
+
+// Tree returns the parsed tree value.
+func (stored *StoredTree) Tree() *object.Tree {
+ return stored.tree
+}