package aggregate

import (
	"github.com/pingcap-inc/clinic/pkg/ngm/statements/api"
	"github.com/pingcap-inc/clinic/pkg/ngm/statements/load"
)

func AggDigestText() Aggregator {
	return &DigestText{}
}

type DigestText struct {
	digestText string
}

var _ Aggregator = (*DigestText)(nil)

func (a *DigestText) Add(record *load.StmtRecord) {
	if a.digestText != "" {
		return
	}
	a.digestText = record.NormalizedSQL
}

func (a *DigestText) Merge(agg Aggregator) {
	if agg, ok := agg.(*DigestText); ok {
		if a.digestText == "" {
			a.digestText = agg.digestText
		}
	}
}

func (a *DigestText) Output(model *api.Model) {
	model.DigestText = a.digestText
}
