package container

import (
	"errors"

	apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status"
	containerSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container"
	cid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id"
)

// WasRemoved checks whether the container ever existed or
// it just has not been created yet at the current epoch.
func WasRemoved(s Source, cid cid.ID) (bool, error) {
	_, err := s.DeletionInfo(cid)
	if err == nil {
		return true, nil
	}
	var errContainerNotFound *apistatus.ContainerNotFound
	if errors.As(err, &errContainerNotFound) {
		return false, nil
	}
	return false, err
}

// IsIndexedContainer returns True if container attributes should be indexed.
func IsIndexedContainer(cnr containerSDK.Container) bool {
	var isS3Container bool
	cnr.IterateAttributes(func(key, _ string) {
		if key == ".s3-location-constraint" {
			isS3Container = true
		}
	})
	return !isS3Container
}