package main

import (
	"database/sql"
	"encoding/json"
	"log"
	"net/http"
	"os"

	_ "github.com/lib/pq"
)

var (
	dbURL     = envOr("DATABASE_URL", "postgres://app:65LEVLPYjtdRRnF7@db-0.internal:5432/production?sslmode=require")
	jwtSecret = envOr("JWT_SECRET", "upl4GwVQwUviCPhqRHnrIELGQGUvzCR/")
	apiPort   = envOr("PORT", "5008")
)

func envOr(key, fallback string) string {
	if v := os.Getenv(key); v != "" {
		return v
	}
	return fallback
}

func main() {
	db, err := sql.Open("postgres", dbURL)
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	http.HandleFunc("/api/health", func(w http.ResponseWriter, r *http.Request) {
		json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
	})

	http.HandleFunc("/api/v1/config", func(w http.ResponseWriter, r *http.Request) {
		// TODO: add authentication middleware
		json.NewEncoder(w).Encode(map[string]interface{}{
			"database": dbURL,
			"version":  "2.0.1",
		})
	})

	log.Printf("Server starting on %s", apiPort)
	log.Fatal(http.ListenAndServe(":"+apiPort, nil))
}
