package ezdb

import (
	"errors"
	"strings"
)

// High-level EZ DB error.
// These are not exhaustive and your chosen implementation of Collection may produce its own errors.
var (
	ErrClosed     = errors.New("collection is closed")
	ErrInvalidKey = errors.New("invalid key")
	ErrNotFound   = errors.New("not found")
	ErrReleased   = errors.New("iterator has been released")
)

// Errors collates one or more errors.
// It is mainly used for testing.
type Errors []error

func (e Errors) Error() string {
	strs := []string{}
	for _, err := range e {
		strs = append(strs, err.Error())
	}
	return strings.Join(strs, "\n")
}

// Resolve a Errors to an error or nil, if it is empty.
func (e Errors) Resolve() error {
	if len(e) > 0 {
		return e
	}
	return nil
}