package controllers

import (
	oclib "cloud.o-forge.io/core/oc-lib"
	"cloud.o-forge.io/core/oc-lib/tools"
	beego "github.com/beego/beego/v2/server/web"
	"github.com/nats-io/nats.go"
)

// VersionController operations for Version
type VersionController struct {
	beego.Controller
}

// @Title GetAll
// @Description get version
// @Success 200
// @router / [get]
func (c *VersionController) GetAll() {
	c.Data["json"] = map[string]string{"version": "1"}
	c.ServeJSON()
}

// @Title Status
// @Description get status
// @Success 200
// @router /status [get]
func (c *VersionController) Status() {
	errStr := ""
	api := tools.API{}
	state, code, err := api.GetState()

	if state == tools.ALIVE {
		_, err = nats.Connect(oclib.GetConfig().NATSUrl)
	}
	if err != nil {
		errStr = err.Error()
	}
	c.Data["json"] = map[string]interface{}{
		"data": map[string]interface{}{
			"state": state.String(),
			"code":  state,
		},
		"error": errStr,
		"code":  code,
	}
	c.ServeJSON()
}