node build fixed
This commit is contained in:
98
seanime-2.9.10/internal/handlers/docs.go
Normal file
98
seanime-2.9.10/internal/handlers/docs.go
Normal file
@@ -0,0 +1,98 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/goccy/go-json"
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
type (
|
||||
ApiDocsGroup struct {
|
||||
Filename string `json:"filename"`
|
||||
Name string `json:"name"`
|
||||
Handlers []*RouteHandler `json:"handlers"`
|
||||
}
|
||||
|
||||
RouteHandler struct {
|
||||
Name string `json:"name"`
|
||||
TrimmedName string `json:"trimmedName"`
|
||||
Comments []string `json:"comments"`
|
||||
Filepath string `json:"filepath"`
|
||||
Filename string `json:"filename"`
|
||||
Api *RouteHandlerApi `json:"api"`
|
||||
}
|
||||
|
||||
RouteHandlerApi struct {
|
||||
Summary string `json:"summary"`
|
||||
Descriptions []string `json:"descriptions"`
|
||||
Endpoint string `json:"endpoint"`
|
||||
Methods []string `json:"methods"`
|
||||
Params []*RouteHandlerParam `json:"params"`
|
||||
BodyFields []*RouteHandlerParam `json:"bodyFields"`
|
||||
Returns string `json:"returns"`
|
||||
ReturnGoType string `json:"returnGoType"`
|
||||
ReturnTypescriptType string `json:"returnTypescriptType"`
|
||||
}
|
||||
|
||||
RouteHandlerParam struct {
|
||||
Name string `json:"name"`
|
||||
JsonName string `json:"jsonName"`
|
||||
GoType string `json:"goType"` // e.g., []models.User
|
||||
UsedStructType string `json:"usedStructType"` // e.g., models.User
|
||||
TypescriptType string `json:"typescriptType"` // e.g., Array<User>
|
||||
Required bool `json:"required"`
|
||||
Descriptions []string `json:"descriptions"`
|
||||
}
|
||||
)
|
||||
|
||||
var cachedDocs []*ApiDocsGroup
|
||||
|
||||
// HandleGetDocs
|
||||
//
|
||||
// @summary returns the API documentation
|
||||
// @route /api/v1/internal/docs [GET]
|
||||
// @returns []handlers.ApiDocsGroup
|
||||
func (h *Handler) HandleGetDocs(c echo.Context) error {
|
||||
|
||||
if len(cachedDocs) > 0 {
|
||||
return h.RespondWithData(c, cachedDocs)
|
||||
}
|
||||
|
||||
// Read the file
|
||||
wd, _ := os.Getwd()
|
||||
buf, err := os.ReadFile(filepath.Join(wd, "codegen/generated/handlers.json"))
|
||||
if err != nil {
|
||||
return h.RespondWithError(c, err)
|
||||
}
|
||||
|
||||
var data []*RouteHandler
|
||||
// Unmarshal the data
|
||||
err = json.Unmarshal(buf, &data)
|
||||
if err != nil {
|
||||
return h.RespondWithError(c, err)
|
||||
}
|
||||
|
||||
// Group the data
|
||||
groups := make(map[string]*ApiDocsGroup)
|
||||
for _, handler := range data {
|
||||
group, ok := groups[handler.Filename]
|
||||
if !ok {
|
||||
group = &ApiDocsGroup{
|
||||
Filename: handler.Filename,
|
||||
Name: strings.TrimPrefix(handler.Filename, ".go"),
|
||||
}
|
||||
groups[handler.Filename] = group
|
||||
}
|
||||
group.Handlers = append(group.Handlers, handler)
|
||||
}
|
||||
|
||||
cachedDocs = make([]*ApiDocsGroup, 0, len(groups))
|
||||
for _, group := range groups {
|
||||
cachedDocs = append(cachedDocs, group)
|
||||
}
|
||||
|
||||
return h.RespondWithData(c, groups)
|
||||
}
|
||||
Reference in New Issue
Block a user