package context

import (
	"git.ekzyis.com/ekzyis/delphi.market/db"
	"git.ekzyis.com/ekzyis/delphi.market/lnd"
	"github.com/labstack/echo/v4"
)

type ServerContext struct {
	Environment    string
	PublicURL      string
	CommitShortSha string
	CommitLongSha  string
	Version        string
	Db             *db.DB
	Lnd            *lnd.LNDClient
}

func (sc *ServerContext) Render(c echo.Context, code int, name string, data map[string]any) error {
	envVars := map[string]any{
		"PUBLIC_URL":       sc.PublicURL,
		"COMMIT_SHORT_SHA": sc.CommitShortSha,
		"COMMIT_LONG_SHA":  sc.CommitLongSha,
		"VERSION":          sc.Version,
	}
	merge(&data, &envVars)
	return c.Render(code, name, data)
}

func merge[T comparable](target *map[T]any, src *map[T]any) {
	for k, v := range *src {
		(*target)[k] = v
	}
}