package main

import (
	"context"
	"github.com/aws/aws-lambda-go/lambda"
	"log"
	countalert "swat/count-alert"
)

// Global configuration variables

func Handler(ctx context.Context) {
	datePlaneEGContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/data-plane/errorlog-governance.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	dataPlaneEGCount, err := countalert.CountCommentAlertsFromContent(datePlaneEGContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	datePlaneETContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/data-plane/errorlog-tcocp.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	dataPlaneETCount, err := countalert.CountCommentAlertsFromContent(datePlaneETContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	datePlaneKGContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/data-plane/kernel-governance.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	dataPlaneKGCount, err := countalert.CountAlertsFromContent(datePlaneKGContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	datePlaneKTContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/data-plane/kernel-tcocp.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	dataPlaneKTCount, err := countalert.CountAlertsFromContent(datePlaneKTContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	controlPlaneEGContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/control-plane/errorlog-governance.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	controlPlaneEGCount, err := countalert.CountCommentAlertsFromContent(controlPlaneEGContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	controlPlaneETContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/control-plane/errorlog-tcocp.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	controlPlaneETCount, err := countalert.CountCommentAlertsFromContent(controlPlaneETContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	controlPlaneKGContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/control-plane/kernel-governance.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	controlPlaneKGCount, err := countalert.CountAlertsFromContent(controlPlaneKGContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	controlPlaneKTContent, err := countalert.GetGitHubFileContent("tidbcloud", "runbooks", "rules/dedicated/swat/control-plane/kernel-tcocp.yaml", "master")
	if err != nil {
		log.Printf("Failed to get file: %v", err)
		return
	}
	controlPlaneKTCount, err := countalert.CountAlertsFromContent(controlPlaneKTContent)
	if err != nil {
		log.Printf("Failed to count alerts: %v", err)
		return
	}

	var alertRuleFromErrorlog = dataPlaneEGCount + controlPlaneEGCount
	var alertRuleFromTCOC = dataPlaneKGCount + controlPlaneKGCount + dataPlaneETCount + controlPlaneETCount + dataPlaneKTCount + controlPlaneKTCount

	log.Printf("Alerts number of errorlog: %d", alertRuleFromErrorlog)
	log.Printf("Alerts number of tcoc: %d", alertRuleFromTCOC)

	alert := countalert.AddAlert(alertRuleFromErrorlog, alertRuleFromTCOC)
	if alert {
		log.Println("Alert added successfully")
	} else {
		log.Println("Failed to add alert")
	}

}

func main() {
	lambda.Start(Handler)
	//Handler(context.Background())
}
