package cql

import (
	"github.com/everything-on-mysql/cassandra-on-mysql/pkg/metrics"
	"go.uber.org/zap"
)

func appendBatchLogFields(fields []zap.Field, tracker *metrics.RequestMetrics) []zap.Field {
	if tracker == nil {
		return fields
	}

	if payload := tracker.ClientPayload(); len(payload) > 0 {
		fields = append(fields, zap.Any("client_payload", payload))
	}

	batchType, statementCount, executeItemCount, mergedGroupCount, mergedStmtCount := tracker.BatchInfo()
	if statementCount <= 0 {
		return fields
	}

	fields = append(fields,
		zap.String("batch_type", batchType),
		zap.Int("batch_size", statementCount),
		zap.Int("batch_input_statement_count", statementCount),
		zap.Int("batch_execute_item_count", executeItemCount),
		zap.Int("batch_execute_plan_count", executeItemCount),
		zap.Int("batch_merged_group_count", mergedGroupCount),
		zap.Int("batch_merged_statement_count", mergedStmtCount),
		zap.Bool("batch_merge_applied", mergedGroupCount > 0),
	)
	return fields
}
