package oneconsole

import (
	"context"
	"sync"

	"github.com/tidbcloud/account/internel/svc/comsvc"
)

type OneConsoleUserSvcIface interface {
	CheckEmailAlreadyHasOrgRole(ctx context.Context, emails []string, orgId uint64) ([]string, error)

	InviteUsersToOrg(ctx context.Context, param *InviteUsersParam, operator *comsvc.Operator) ([]InviteUserRet, error)
	UpdateUserRoles(ctx context.Context, param *UpdateRolesParam, operator *comsvc.Operator) error
	SendActivationEmail(ctx context.Context, userId, orgId uint64, operator *comsvc.Operator) error

	ListUsers(ctx context.Context, param *ListUsersParam) (*ListUsersRet, error)
}

var (
	oneConsoleUserSvcInitOnce sync.Once
	oneConsoleUserSvcInstance OneConsoleUserSvcIface
)

type OneConsoleUserSvc struct {
}

func GetOneConsoleUserSvc() OneConsoleUserSvcIface {
	oneConsoleUserSvcInitOnce.Do(func() {
		oneConsoleUserSvcInstance = &OneConsoleUserSvc{}

	})
	return oneConsoleUserSvcInstance
}
