package dbjwt

import (
	"time"

	"github.com/tidbcloud/account/internel/svc/apikey"

	"github.com/tidbcloud/account/internel/dao/entity"
	"github.com/tidbcloud/core-svc/idl/pbgen/proto/core"
)

type DbJwtInfo struct {
	Jwt    string
	DbUser string
}

type GetJwtByTokenParam struct {
	ClusterID            uint64
	Auth0Token           string
	TokenExpiredDuration time.Duration
}

type GetJwtByUserParam struct {
	ClusterID            uint64
	UserID               uint64
	Email                string
	TokenExpiredDuration time.Duration
}

type GetJwtByApiKeyParam struct {
	ClusterID            uint64
	ApiKeyID             uint64
	AccessKey            string
	TokenExpiredDuration time.Duration
}

type GetCloudAdminPasswdParam struct {
	ClusterID uint64
}

type GetApiKeyDBUserAndJwtResult struct {
	dbUser          *string
	jwt             *string
	isDedicated     *bool
	serverlessToken *string
	clusterId       *uint64
	orgId           *uint64
}

type GetJwtCMOperatorParam struct {
	UserID               uint64
	Email                string
	OperatorType         entity.TargetType
	ApiKey               *apikey.ApiKey
	ApiKeyID             uint64
	AccessKey            string
	ClusterID            uint64
	TokenExpiredDuration time.Duration
}

type GetJwtCMOperatorResult struct {
	Cluster        *core.Cluster
	DBUserOperator *core.DBUserOperator
}

type GetUserParam struct {
	UserID uint64
	Email  string
}
type GetApiKeyParam struct {
	ApiKeyID  uint64
	AccessKey string
}
