package restic

import (
	"fmt"

	"github.com/restic/restic/backend"
)

type Blob struct {
	ID          backend.ID `json:"id,omitempty"`
	Offset      uint64     `json:"offset,omitempty"`
	Size        uint64     `json:"size,omitempty"`
	Storage     backend.ID `json:"sid,omitempty"`   // encrypted ID
	StorageSize uint64     `json:"ssize,omitempty"` // encrypted Size
}

type Blobs []Blob

func (b Blob) Free() {
	if b.ID != nil {
		b.ID.Free()
	}

	if b.Storage != nil {
		b.Storage.Free()
	}
}

func (b Blob) Valid() bool {
	if b.ID == nil || b.Storage == nil || b.StorageSize == 0 {
		return false
	}

	return true
}

func (b Blob) String() string {
	return fmt.Sprintf("Blob<%s (%d) -> %s (%d)>",
		b.ID.Str(), b.Size,
		b.Storage.Str(), b.StorageSize)
}