package main

import (
	"context"
	"flag"
	"time"

	"github.com/go-co-op/gocron"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"github.com/tidbcloud/tiinf/transport/http/tigin"
	"go.uber.org/zap"

	"github.com/tidbcloud/auditlog/configs"
	"github.com/tidbcloud/auditlog/internal/entity"
	"github.com/tidbcloud/auditlog/internal/tasks"
)

var (
	configPath = flag.String("config", "/etc/dbaas/config.yaml", "DBaaS configuration file path")
)

func main() {
	flag.Parse()
	configs.SetConfigPath(*configPath)

	ctx := context.TODO()
	tilog.Info(ctx, "auditservice-worker start")

	if err := configs.LoadRemoteConfig(ctx); err != nil {
		tilog.Panic(ctx, "viper load remote config error", zap.Error(err))
		return
	}

	// Init db
	cfg := configs.GetConfig()
	if err := entity.InitDB(cfg, true); err != nil {
		tilog.Panic(ctx, "failed to init db", zap.Error(err))
		return
	}

	s := gocron.NewScheduler(time.UTC)

	s.Every(1).Day().Do(tasks.DeleteOldEvents) //nolint:errcheck

	tilog.Info(ctx, "start to running auditservice-worker")
	s.StartAsync()

	engine := tigin.Default()
	engine.GET("/healthz", tigin.Ping)
	engine.GET("/ping", tigin.Ping)

	engine.Run("0.0.0.0:11000") //nolint:errcheck
}
