package handler

import (
	"context"

	"github.com/tidbcloud/observability/o11ymetering/pkg/common/constants"
	"github.com/tidbcloud/observability/o11ymetering/pkg/common/models"
	"github.com/tidbcloud/observability/pkg/common/configs"
)

type DryRun struct {
	Env constants.BizEnv
}

func (d DryRun) Build(ctx context.Context, period string) (models.StatisticTask, error) {
	return models.StatisticTask{
		Region:         configs.GetServiceInfo().Region,
		StatisticClass: constants.DryRunStatisticClass,
		MeteringGroup:  constants.DryRunMeteringGroup,
		Env:            d.Env,
		Period:         period,
		State:          constants.StatePending,
	}, nil
}

func (d DryRun) Execute(ctx context.Context, task models.StatisticTask) ([]*models.StatisticRecord, error) {
	records := make([]*models.StatisticRecord, 0, 1)

	records = append(records, &models.StatisticRecord{
		TaskID:         task.ID,
		Region:         configs.GetServiceInfo().Region,
		StatisticClass: task.StatisticClass,
		MeteringGroup:  task.MeteringGroup,
		Period:         task.Period,
		Env:            task.Env,
		StatisticName:  constants.DryRunStatisticName,

		ClusterMeta: models.ClusterMeta{
			Tenant:  "undefined",
			Project: "undefined",
			Cluster: "undefined",
		},
		Category:    constants.DryRunCategory,
		SubCategory: "undefined",
		Component:   "undefined",
		Container:   "undefined",
		Source:      "",
		Value:       1,
	})
	return records, nil
}
