aboutsummaryrefslogtreecommitdiff
path: root/ref/store/memory/store.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-05-24 13:41:34 +0000
committerGravatar Runxi Yu2026-05-24 14:12:35 +0000
commit947bf81a33c6e4e5d21c8b36f9317fe00b84f6ae (patch)
tree67824655ef9dbf2d941dae06d59ea29a1e32d458 /ref/store/memory/store.go
parentREADME: Update (diff)
signatureNo signature
ref/store/memory: Simple memory-backed ref store v0.1.175
Diffstat (limited to 'ref/store/memory/store.go')
-rw-r--r--ref/store/memory/store.go42
1 files changed, 42 insertions, 0 deletions
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
+}