package dataflow

import (
	"context"

	"github.com/tidbcloud/dataflow-service/idl/pbgen/proto/dataflow"
)

// These DTOs intentionally live in TMS instead of the generated Dataflow API
// package. This keeps TMS buildable while the new RPC is rolled out and its
// generated Go client has not been published yet.
type PrepareClassicRestoreAccessRequest struct {
	BackupID       uint64
	BucketID       uint64
	RestoreID      string
	TrustedRoleARN string
}

type PrepareClassicRestoreAccessResponse struct {
	SourceRoleARN string
	ExternalID    string
}

type CleanupClassicRestoreAccessRequest struct {
	BucketID  uint64
	RestoreID string
}

//go:generate go run go.uber.org/mock/mockgen@latest -source=$GOFILE -package=mock_$GOPACKAGE -destination=./mock_$GOPACKAGE/mock_$GOFILE
type DataFlow interface {
	// apis for restore dedicated backup to premium cluster
	GetBackup(ctx context.Context, req *dataflow.GetBackupReq) (*dataflow.GetBackupResp, error)
	GrantAccessBackupBucket(ctx context.Context, req *dataflow.GrantAccessBackupBucketReq) error
	RevokeAccessBackupBucket(ctx context.Context, req *dataflow.RevokeAccessBackupBucketReq) error
	PrepareClassicRestoreAccess(ctx context.Context, req *PrepareClassicRestoreAccessRequest) (*PrepareClassicRestoreAccessResponse, error)
	CleanupClassicRestoreAccess(ctx context.Context, req *CleanupClassicRestoreAccessRequest) error
}
