shithub: furgit

ref: df1f2fb3daa1acd25c88510f259d5535fb482126
dir: /object/store/writer_object.go/

View raw version
package objectstore

import (
	"io"

	objectid "codeberg.org/lindenii/furgit/object/id"
	objecttype "codeberg.org/lindenii/furgit/object/type"
)

// ObjectWriter writes individual Git objects.
type ObjectWriter interface {
	// WriteReaderContent writes one typed object content stream.
	WriteReaderContent(ty objecttype.Type, size int64, src io.Reader) (objectid.ObjectID, error)

	// WriteReaderFull writes one full serialized object stream as "type size\0content".
	WriteReaderFull(src io.Reader) (objectid.ObjectID, error)

	// WriteBytesContent writes one typed object content byte slice.
	WriteBytesContent(ty objecttype.Type, content []byte) (objectid.ObjectID, error)

	// WriteBytesFull writes one full serialized object byte slice as "type size\0content".
	WriteBytesFull(raw []byte) (objectid.ObjectID, error)
}

// ObjectQuarantine represents one quarantined object-wise write.
type ObjectQuarantine interface {
	BaseQuarantine
	ObjectWriter
}

// ObjectQuarantineOptions controls the options for one object quarantine creation.
type ObjectQuarantineOptions struct{}

// ObjectQuarantiner creates quarantines for object-wise writes.
type ObjectQuarantiner interface {
	BeginObjectQuarantine(opts ObjectQuarantineOptions) (ObjectQuarantine, error)
}