package main

import (
	"fmt"
	"sort"
	"time"
)

type statsData struct {
	Name    string
	Count   int
	Longest time.Duration
	Total   time.Duration
}

var stats = map[string]statsData{}

func addStats(name string, v Value, t time.Time) {
	if !katiStatsFlag {
		return
	}
	d := time.Now().Sub(t)
	key := fmt.Sprintf("%s:%s", name, v.String())
	s := stats[key]
	if d > s.Longest {
		s.Longest = d
	}
	s.Total += d
	s.Count++
	stats[key] = s
}

func dumpStats() {
	if !katiStatsFlag {
		return
	}
	var sv byTotalTime
	for k, v := range stats {
		v.Name = k
		sv = append(sv, v)
	}
	sort.Sort(sv)
	for _, s := range sv {
		fmt.Printf("%s,%d,%v,%v\n", s.Name, s.Count, s.Longest, s.Total)
	}
}

type byTotalTime []statsData

func (b byTotalTime) Len() int      { return len(b) }
func (b byTotalTime) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
func (b byTotalTime) Less(i, j int) bool {
	return b[i].Total > b[j].Total
}
