aboutsummaryrefslogtreecommitdiff
path: root/object/storer/memory/add.go
blob: 3b27f52db3028179e8d7e52abf469a0de7c4ec64 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package memory

import (
	objectheader "codeberg.org/lindenii/furgit/object/header"
	objectid "codeberg.org/lindenii/furgit/object/id"
	objecttype "codeberg.org/lindenii/furgit/object/type"
)

// AddObject stores one object body and returns its object ID.
func (store *Store) AddObject(ty objecttype.Type, body []byte) objectid.ObjectID {
	header, ok := objectheader.Encode(ty, int64(len(body)))
	if !ok {
		panic("failed to encode object header")
	}

	raw := append(append([]byte(nil), header...), body...)
	id := store.algo.Sum(raw)
	store.objects[id] = storedObject{ty: ty, content: append([]byte(nil), body...)}

	return id
}