diff options
Diffstat (limited to 'objectstore/loose/read_bytes.go')
| -rw-r--r-- | objectstore/loose/read_bytes.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/objectstore/loose/read_bytes.go b/objectstore/loose/read_bytes.go new file mode 100644 index 00000000..4d1cb439 --- /dev/null +++ b/objectstore/loose/read_bytes.go @@ -0,0 +1,29 @@ +package loose + +import ( + "codeberg.org/lindenii/furgit/objectid" + "codeberg.org/lindenii/furgit/objecttype" +) + +// ReadBytesFull reads a full serialized object as "type size\0content". +func (store *Store) ReadBytesFull(id objectid.ObjectID) ([]byte, error) { + file, err := store.openObject(id) + if err != nil { + return nil, err + } + defer func() { _ = file.Close() }() + return decodeAll(file) +} + +// ReadBytesContent reads an object's type and content bytes. +func (store *Store) ReadBytesContent(id objectid.ObjectID) (objecttype.Type, []byte, error) { + raw, err := store.ReadBytesFull(id) + if err != nil { + return objecttype.TypeInvalid, nil, err + } + ty, content, err := parseRaw(raw) + if err != nil { + return objecttype.TypeInvalid, nil, err + } + return ty, content, nil +} |
