package namedcredential

import (
	"context"
	"time"

	"github.com/pingcap-inc/nexuscrm-contract/pkg/constants"
	zlog "github.com/rs/zerolog/log"
)

func namedCredentialTimingMillis(started time.Time) int64 {
	return time.Since(started).Milliseconds()
}

func logNamedCredentialRuntimeResolveTiming(ctx context.Context, operation, devName, kind, ownerPack string, started time.Time, err error, definitionMS, packAccessMS, secretMS int64) {
	if v, _ := ctx.Value(constants.ContextKeyPerfTiming).(bool); !v && err == nil {
		return
	}
	status := "success"
	if err != nil {
		status = "error"
	}
	event := zlog.Info().
		Str("event", "namedcredential_runtime_resolve_timing").
		Str("operation", operation).
		Str("developer_name", devName).
		Str("kind", kind).
		Str("owner_pack", ownerPack).
		Str("status", status).
		Bool("has_error", err != nil).
		Int64("definition_ms", definitionMS).
		Int64("pack_access_ms", packAccessMS).
		Int64("secret_ms", secretMS).
		Int64("elapsed_ms", namedCredentialTimingMillis(started))
	if err != nil {
		event = event.Err(err)
	}
	event.Msg("NamedCredential runtime resolve timing")
}
