package centralmod

import (
	"github.com/pingcap/log"
	"github.com/tidbcloud/metrics-server/central/db/tenant"
	"github.com/tidbcloud/metrics-server/central/model/testtoken"
	"github.com/tidbcloud/pkgv2/secret/encrypt"
	"go.uber.org/zap"
)

// a covered struct who cover some method of testtoken.Model
type CoveredTestTokenModel struct {
	testtoken.Model
}

func NewCoveredTestTokenModel(log *zap.Logger, aesCrypt *encrypt.AESCrypt) CoveredTestTokenModel {
	mod := testtoken.NewModel(log,  aesCrypt, )
	return CoveredTestTokenModel{mod}
}

func (m CoveredTestTokenModel) TryGetTestUserFromToken(rawToken string, orgID uint64, skipCheckOrg bool) *tenant.User {
	email := m.TryGetEmailFromTestToken(rawToken)
	if email == "" {
		return nil
	}
	user, found := GetUser(email, orgID, skipCheckOrg)
	if found {
		return user
	}
	log.Info("find user failed", zap.String("email", email))
	return nil
}
