package server import ( "music-server/internal/backend" "music-server/internal/db" "net/http" "github.com/labstack/echo/v5" ) type IndexHandler struct { } func NewIndexHandler() *IndexHandler { return &IndexHandler{} } // GetVersion godoc // // @Summary Getting the version of the backend // @Description get string by ID // @Tags accounts // @Accept json // @Produce json // @Success 200 {object} backend.VersionData // @Failure 404 {object} string // @Router /version [get] func (i *IndexHandler) GetVersion(ctx *echo.Context) error { versionHistory := backend.GetVersionHistory() if versionHistory.Version == "" { return ctx.JSON(http.StatusNotFound, "version not found") } return ctx.JSON(http.StatusOK, versionHistory) } // GetDBTest godoc // @Summary Test database connection // @Description Tests the database connection // @Tags database // @Accept json // @Produce json // @Success 200 {string} string "TestedDB" // @Router /dbtest [get] func (i *IndexHandler) GetDBTest(ctx *echo.Context) error { backend.TestDB() return ctx.JSON(http.StatusOK, "TestedDB") } // HealthCheck godoc // @Summary Check server health // @Description Returns the health status of the server // @Tags health // @Accept json // @Produce json // @Success 200 {string} string "OK" // @Router /health [get] func (i *IndexHandler) HealthCheck(ctx *echo.Context) error { return ctx.JSON(http.StatusOK, db.Health()) } // GetCharacterList godoc // @Summary Get list of characters // @Description Returns a list of all available characters // @Tags characters // @Accept json // @Produce json // @Success 200 {array} string // @Router /characters [get] func (i *IndexHandler) GetCharacterList(ctx *echo.Context) error { characters := backend.GetCharacterList() return ctx.JSON(http.StatusOK, characters) } // GetCharacter godoc // @Summary Get character image // @Description Returns the image for a specific character // @Tags characters // @Accept json // @Produce image/png // @Param name query string true "Character name" // @Success 200 {file} file // @Router /character [get] func (i *IndexHandler) GetCharacter(ctx *echo.Context) error { character := ctx.QueryParam("name") return ctx.File(backend.GetCharacter(character)) }