From 27ee98e7a9a8693db59e755739e10c1c1ba852b4 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 21 Feb 2026 03:46:50 +0800 Subject: objectstore/loose: Add loose backend --- objectstore/loose/read_bytes.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 objectstore/loose/read_bytes.go (limited to 'objectstore/loose/read_bytes.go') 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 +} -- cgit v1.3.1-10-gc9f91