package main

import (
	"context"
	"encoding/json"
	"fmt"

	_ "github.com/mattn/go-sqlite3"

	"github.com/pingcap-inc/clinic/pkg/ngm/slowquery/slowstats"
	"github.com/pingcap-inc/clinic/pkg/ngm/storage"
)

func main() {
	stores, err := storage.NewStorageFactory("")
	check(err)
	sq := slowstats.NewStatsQuery("./cache", stores)

	dbs, err := sq.QueryDatabases(context.TODO(),
		slowstats.ClusterInfo{
			Provider:  "aws",
			Region:    "us-east-1",
			Env:       "prod",
			TenantID:  "1372813089209061633",
			ProjectID: "1372813089454525346",
			ClusterID: "1379661944646413143",
		},
		1710000000,
		3)
	check(err)
	fmt.Println(dbs)

	rs, err := sq.QueryStats(context.TODO(),
		slowstats.ClusterInfo{
			Provider:  "aws",
			Region:    "us-east-1",
			Env:       "prod",
			TenantID:  "1372813089209061633",
			ProjectID: "1372813089454525346",
			ClusterID: "1379661944646413143",
		},
		1710000000,
		3,
		[]string{"AnalyzeTable"},
		true,
		[]string{"dh_app_592", "information_schema"},
		false,
		"",
		10)
	check(err)
	b, _ := json.MarshalIndent(rs, "", "  ")
	fmt.Println(string(b))

	metrics, err := sq.QueryMetric(context.TODO(),
		slowstats.ClusterInfo{
			Provider:  "aws",
			Region:    "us-east-1",
			Env:       "prod",
			TenantID:  "1372813089209061633",
			ProjectID: "1372813089454525346",
			ClusterID: "1379661944646413143",
		},
		1712793600, // 2024041100
		168,
		"")
	check(err)
	fmt.Println(metrics)
	fmt.Println(len(metrics))
}

func check(err error) {
	if err != nil {
		panic(err)
	}
}
