collector/docsyncer/metric.go (29 lines of code) (raw):
package docsyncer
import "fmt"
type Status string
const (
StatusWaitStart Status = "wait start"
StatusProcessing Status = "in processing"
StatusFinish Status = "finish"
)
type CollectionMetric struct {
CollectionStatus Status
TotalCount uint64
FinishCount uint64
}
func NewCollectionMetric() *CollectionMetric {
return &CollectionMetric{
CollectionStatus: StatusWaitStart,
}
}
func (cm *CollectionMetric) String() string {
if cm.CollectionStatus == StatusWaitStart {
return fmt.Sprintf("-")
}
if cm.TotalCount == 0 {
return fmt.Sprintf("100%% (%v/%v)", cm.FinishCount, cm.TotalCount)
} else {
return fmt.Sprintf("%.2f%% (%v/%v)", float64(cm.FinishCount)/float64(cm.TotalCount)*100,
cm.FinishCount, cm.TotalCount)
}
}