From 947bf81a33c6e4e5d21c8b36f9317fe00b84f6ae Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 24 May 2026 13:41:34 +0000 Subject: ref/store/memory: Simple memory-backed ref store --- ref/store/memory/store.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 ref/store/memory/store.go (limited to 'ref/store/memory/store.go') diff --git a/ref/store/memory/store.go b/ref/store/memory/store.go new file mode 100644 index 00000000..d77f72e2 --- /dev/null +++ b/ref/store/memory/store.go @@ -0,0 +1,42 @@ +package memory + +import ( + "sync" + + objectid "codeberg.org/lindenii/furgit/object/id" + refstore "codeberg.org/lindenii/furgit/ref/store" +) + +// Store reads and writes one in-memory Git reference namespace. +// +// Labels: Close-Caller. +type Store struct { + mu sync.RWMutex + algo objectid.Algorithm + refs map[string]storedRef +} + +var ( + _ refstore.Reader = (*Store)(nil) + _ refstore.Transactioner = (*Store)(nil) + _ refstore.Batcher = (*Store)(nil) +) + +// New builds one empty in-memory reference store for one object format. +func New(algo objectid.Algorithm) (*Store, error) { + if algo.Size() == 0 { + return nil, objectid.ErrInvalidAlgorithm + } + + return &Store{ + algo: algo, + refs: make(map[string]storedRef), + }, nil +} + +// Close closes the in-memory reference store. +// +// Labels: MT-Unsafe. +func (store *Store) Close() error { + return nil +} -- cgit v1.3.1-10-gc9f91