package prometheus

import (
	"fmt"
	"time"
)

// Stats represents data migration stats.
type Stats struct {
	Filtered      bool
	MinTime       int64
	MaxTime       int64
	Samples       uint64
	Series        uint64
	Blocks        int
	SkippedBlocks int
}

// String returns string representation for s.
func (s Stats) String() string {
	str := fmt.Sprintf("Prometheus snapshot stats:\n"+
		"  blocks found: %d;\n"+
		"  blocks skipped by time filter: %d;\n"+
		"  min time: %d (%v);\n"+
		"  max time: %d (%v);\n"+
		"  samples: %d;\n"+
		"  series: %d.",
		s.Blocks, s.SkippedBlocks,
		s.MinTime, time.Unix(s.MinTime/1e3, 0).Format(time.RFC3339),
		s.MaxTime, time.Unix(s.MaxTime/1e3, 0).Format(time.RFC3339),
		s.Samples, s.Series)

	if s.Filtered {
		str += "\n* Stats numbers are based on blocks meta info and don't account for applied filters."
	}

	return str
}