package utils

import (
	"database/sql"
	"fmt"

	"github.com/tidbcloud/ecosystem-service/internal/storage/db/vercel"
)

func GetTeamIDString(teamID sql.NullString) string {
	// check if the configuration is created for a team
	// if yes, when querying Vercel API, teamID is required to set.
	var tID string
	if teamID.Valid {
		tID = teamID.String
	} else {
		tID = ""
	}
	return tID
}

func GenerateDetailUrl(tidbCloudHost string, conn *vercel.ClusterConnection) string {
	detailsPage := fmt.Sprintf("%s/console/clusters/%d/branches?orgId=%d&projectId=%d", tidbCloudHost, conn.TiDBClusterID, conn.TiDBOrgID, conn.TiDBProjectID)
	return detailsPage
}

func GetBranchEnvsToDelete(identifier vercel.BranchEnvironmentIdentifier) []string {
	var envsToDelete []string
	if identifier.TiDBHostID.Valid && identifier.TiDBHostID.String != "" {
		envsToDelete = append(envsToDelete, identifier.TiDBHostID.String)
	}
	if identifier.TiDBPortID.Valid && identifier.TiDBPortID.String != "" {
		envsToDelete = append(envsToDelete, identifier.TiDBPortID.String)
	}
	if identifier.TiDBUserID.Valid && identifier.TiDBUserID.String != "" {
		envsToDelete = append(envsToDelete, identifier.TiDBUserID.String)
	}
	if identifier.TiDBPasswordID.Valid && identifier.TiDBPasswordID.String != "" {
		envsToDelete = append(envsToDelete, identifier.TiDBPasswordID.String)
	}
	if identifier.TiDBDatabaseID.Valid && identifier.TiDBDatabaseID.String != "" {
		envsToDelete = append(envsToDelete, identifier.TiDBDatabaseID.String)
	}
	if identifier.DatabaseUrlID.Valid && identifier.DatabaseUrlID.String != "" {
		envsToDelete = append(envsToDelete, identifier.DatabaseUrlID.String)
	}
	return envsToDelete
}
