package handler

import (
	"log/slog"
	"os"

	"github.com/descope/go-sdk/descope/client"
	"github.com/gofiber/fiber/v2"
)

type AdminHandler struct {
	DescopeClient *client.DescopeClient
}

func NewAdminHandler() *AdminHandler {
	projectID := os.Getenv("DESCOPE_PROJECT_ID")
	managementKey := os.Getenv("DESCOPE_MANAGEMENT_KEY")

	var descopeClient *client.DescopeClient
	var err error

	if projectID != "" && managementKey != "" {
		descopeClient, err = client.NewWithConfig(&client.Config{
			ProjectID:     projectID,
			ManagementKey: managementKey,
		})
		if err != nil {
			slog.Warn("Failed to initialize Descope Client for Admin", "error", err)
		}
	} else {
		slog.Warn("DESCOPE_PROJECT_ID or DESCOPE_MANAGEMENT_KEY missing. Admin functions will fail.")
	}

	return &AdminHandler{
		DescopeClient: descopeClient,
	}
}

func (h *AdminHandler) CheckAuth(c *fiber.Ctx) error {
	return c.Status(fiber.StatusOK).JSON(fiber.Map{"status": "ok"})
}
