61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package generate
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
"text/tabwriter"
|
|
"time"
|
|
)
|
|
|
|
type StoragePlan struct {
|
|
Organization string
|
|
Bucket string
|
|
StartTime time.Time
|
|
EndTime time.Time
|
|
Clean CleanLevel
|
|
Path string
|
|
}
|
|
|
|
func (p *StoragePlan) String() string {
|
|
sb := new(strings.Builder)
|
|
p.PrintPlan(sb)
|
|
return sb.String()
|
|
}
|
|
|
|
func (p *StoragePlan) PrintPlan(w io.Writer) {
|
|
tw := tabwriter.NewWriter(w, 25, 4, 2, ' ', 0)
|
|
fmt.Fprintf(tw, "Organization\t%s\n", p.Organization)
|
|
fmt.Fprintf(tw, "Bucket\t%s\n", p.Bucket)
|
|
fmt.Fprintf(tw, "Start time\t%s\n", p.StartTime)
|
|
fmt.Fprintf(tw, "End time\t%s\n", p.EndTime)
|
|
fmt.Fprintf(tw, "Clean data\t%s\n", p.Clean)
|
|
tw.Flush()
|
|
}
|
|
|
|
// TimeSpan returns the total duration for which the data set.
|
|
func (p *StoragePlan) TimeSpan() time.Duration {
|
|
return p.EndTime.Sub(p.StartTime)
|
|
}
|
|
|
|
type SchemaPlan struct {
|
|
StoragePlan *StoragePlan
|
|
Tags TagCardinalities
|
|
PointsPerSeries int
|
|
}
|
|
|
|
func (p *SchemaPlan) String() string {
|
|
sb := new(strings.Builder)
|
|
p.PrintPlan(sb)
|
|
return sb.String()
|
|
}
|
|
|
|
func (p *SchemaPlan) PrintPlan(w io.Writer) {
|
|
tw := tabwriter.NewWriter(w, 25, 4, 2, ' ', 0)
|
|
fmt.Fprintf(tw, "Tag cardinalities\t%s\n", p.Tags)
|
|
fmt.Fprintf(tw, "Points per series\t%d\n", p.PointsPerSeries)
|
|
fmt.Fprintf(tw, "Total points\t%d\n", p.Tags.Cardinality()*p.PointsPerSeries)
|
|
fmt.Fprintf(tw, "Total series\t%d\n", p.Tags.Cardinality())
|
|
_ = tw.Flush()
|
|
}
|