package storage

import (
	"context"
	client "monitoring/app/storage/clickhouse"
	"time"

	"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
)

type EndpointMetric struct {
	Timestamp    time.Time `json:"timestamp"`
	Service      string    `json:"service"`
	Environment  string    `json:"environment"`
	Endpoint     string    `json:"endpoint"`
	StatusCode   int       `json:"status_code"`
	ResponseTime int       `json:"response_time"`
	Method       string    `json:"method"`
}

func AddEndpointMetric(metric EndpointMetric) error {
	batch, err := connection().PrepareBatch(context.Background(), "INSERT INTO endpoints")
	if err != nil {
		return err
	}

	err = batch.Append(
		metric.Timestamp,
		metric.Service,
		metric.Environment,
		metric.Endpoint,
		metric.StatusCode,
		metric.ResponseTime,
		metric.Method,
	)
	if err != nil {
		return err
	}

	return batch.Send()
}

func connection() driver.Conn {
	return client.Connection
}
