package user

//import (
//	"context"
//	"errors"
//	"fmt"
//
//	"github.com/tidbcloud/account/internel/dao/entity"
//	"github.com/tidbcloud/tiinf/errs"
//	"gorm.io/gorm"
//	"gorm.io/gorm/clause"
//)
//
//const (
//	tableName = "user_login_state_revoke_recs"
//)
//
//type UserLoginStateRevokeRecIface interface {
//	CreateUserLoginStateRevokeRec(ctx context.Context, tx *gorm.DB, state *entity.UserLoginStateRevokeRec) error
//	UpsertUserLoginStateRevokeRec(ctx context.Context, tx *gorm.DB, state *entity.UserLoginStateRevokeRec) error
//	GetUserLoginStateRevokeRecByEmail(ctx context.Context, tx *gorm.DB, email string) (*entity.UserLoginStateRevokeRec, error)
//}
//
//type UserLoginStateRevokeRecDao struct {
//}
//
//func NewUserLoginStateRevokeRecDao() UserLoginStateRevokeRecIface {
//	return &UserLoginStateRevokeRecDao{}
//}
//
//func (dao *UserLoginStateRevokeRecDao) CreateUserLoginStateRevokeRec(ctx context.Context, tx *gorm.DB, state *entity.UserLoginStateRevokeRec) error {
//	err := tx.Table(tableName).Save(state).Error
//	if err != nil {
//		return errs.WrapGORMError(err, "CreateUserLoginStateRevokeRec error")
//	}
//	return nil
//}
//
//func (dao *UserLoginStateRevokeRecDao) UpsertUserLoginStateRevokeRec(ctx context.Context, tx *gorm.DB, state *entity.UserLoginStateRevokeRec) error {
//	err := tx.Table(tableName).Clauses(clause.OnConflict{
//		Columns:   []clause.Column{{Name: "email"}},
//		DoUpdates: clause.AssignmentColumns([]string{"revoked_at"}),
//	}).Create(state).Error
//	if err != nil {
//		return errs.WrapGORMError(err, "UpsertUserLoginStateRevokeRec error")
//	}
//	return nil
//}
//
//func (dao *UserLoginStateRevokeRecDao) GetUserLoginStateRevokeRecByEmail(ctx context.Context, tx *gorm.DB, email string) (*entity.UserLoginStateRevokeRec, error) {
//	res := &entity.UserLoginStateRevokeRec{}
//	err := tx.Table(tableName).Where("email=?", email).First(res).Error
//	if err != nil {
//		if errors.Is(err, gorm.ErrRecordNotFound) {
//			return nil, nil
//		}
//		return nil, errs.WrapGORMError(err, fmt.Sprintf("get db user login state revoke rec failed: %+v", email))
//	}
//	return res, nil
//}
