package user

import (
	context "context"

	"github.com/tidbcloud/tiinf/errs"

	"github.com/tidbcloud/tiinf/monitor/tilog"

	"github.com/tidbcloud/account/internel/dao/entity"
	"gorm.io/gorm"
)

type RegistrationLogParam struct {
	UserId uint64
	Email  string
}

func (d *UserDao) GetUserRegistrationLog(ctx context.Context, tx *gorm.DB, param RegistrationLogParam) (*entity.RegistrationLog, error) {
	if param.Email == "" && param.UserId == 0 {
		return nil, errs.NewBadRequest("param must not all empty", nil)
	}
	var obj entity.RegistrationLog
	qs := entity.NewRegistrationLogQuerySet(tx)

	if param.Email != "" {
		qs.EmailEq(param.Email)
	} else if param.UserId != 0 {
		qs.UserIDEq(entity.ID(param.UserId))
	}

	err := qs.One(&obj)
	if err != nil {
		if err == gorm.ErrRecordNotFound {
			tilog.Info(ctx, "")
			return nil, nil
		}
		return nil, err
	}

	return &obj, nil
}
