package main

import (
	"log"
	"os"

	finans "server/apps/finans"
	FikoYTCtx "server/sistem/fikoyt_ctx"

	"github.com/gofiber/fiber/v3"
	recoverer "github.com/gofiber/fiber/v3/middleware/recover"
	"github.com/sinemah/jsonenv"
)

func main() {
	err := jsonenv.Load("fikoyt.env.json")
	if err != nil {
		log.Fatal("Konfigurrasyon yuklenemedi:", err)
	}

	app := fiber.New(fiber.Config{
		AppName:           os.Getenv("uyg_adi"),
		StreamRequestBody: true,
		Immutable:         true,
		BodyLimit:         10 * 1024 * 1024, // 10MB
	})

	// Recovery middleware
	app.Use(recoverer.New())

	// FikoYT Context sistemi (JSON parser + MongoDB + Session)
	FikoYTCtx.Ayarla(app)

	// Finans API
	finans.Ayarla(app)

	// Sunucuyu baslat
	port := os.Getenv("port_as_string")
	if port == "" {
		port = "9010"
	}

	// SSL sertifika yollari
	certFile := os.Getenv("cert_file")
	certKeyFile := os.Getenv("cert_key_file")
	if certFile == "" {
		certFile = "../../docker/fikoyt-sunucu/merkez.go-server.com/cert/server.crt"
	}
	if certKeyFile == "" {
		certKeyFile = "../../docker/fikoyt-sunucu/merkez.go-server.com/cert/server.key"
	}

	log.Printf("FikoYT Finans Sunucu baslatiliyor - https://localhost:%s", port)
	log.Fatal(app.Listen(":"+port, fiber.ListenConfig{
		CertFile:          certFile,
		CertKeyFile:       certKeyFile,
		EnablePrefork:     false,
		EnablePrintRoutes: true,
	}))
}
