package log_reporter

import (
	"io"

	"github.com/pingcap-inc/alioth/storage"
)

type Reporter struct {
	writer io.Writer

	cov *Coverager
}

// Report used print coverage data according to template format
func NewReporter(store *storage.LogPatternStore, writer io.Writer, version string) (*Reporter, error) {
	cov, err := NewCoverager(store, version)
	if err != nil {
		return nil, err
	}

	return &Reporter{
		cov:    cov,
		writer: writer,
	}, nil
}

// Render outputs report to specified output
func (r *Reporter) Render(templatePath string, kind string, templateContent string) error {
	if kind == "cov" {
		return r.renderCoverageProfile()
	} else if kind == "text" {
		return r.renderTemplate(templatePath, templateContent)
	}

	return nil
}
