mirror of
https://github.com/hay-kot/homebox.git
synced 2025-08-05 09:10:26 +00:00
reorg + pprof endpoints
This commit is contained in:
parent
a4b4fe3454
commit
d30bfac38a
19 changed files with 49 additions and 6 deletions
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
|
@ -10,5 +10,8 @@
|
||||||
"package.json": "package-lock.json, yarn.lock, .eslintrc.js, tsconfig.json, .prettierrc, .editorconfig, pnpm-lock.yaml, postcss.config.js, tailwind.config.js",
|
"package.json": "package-lock.json, yarn.lock, .eslintrc.js, tsconfig.json, .prettierrc, .editorconfig, pnpm-lock.yaml, postcss.config.js, tailwind.config.js",
|
||||||
"docker-compose.yml": "Dockerfile, .dockerignore, docker-compose.dev.yml, docker-compose.yml",
|
"docker-compose.yml": "Dockerfile, .dockerignore, docker-compose.dev.yml, docker-compose.yml",
|
||||||
"README.md": "LICENSE, SECURITY.md"
|
"README.md": "LICENSE, SECURITY.md"
|
||||||
}
|
},
|
||||||
|
"cSpell.words": [
|
||||||
|
"debughandlers"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ tasks:
|
||||||
npx swagger-typescript-api \
|
npx swagger-typescript-api \
|
||||||
--no-client \
|
--no-client \
|
||||||
--modular \
|
--modular \
|
||||||
--path ./backend/app/api/docs/swagger.json \
|
--path ./backend/app/api/static/docs/swagger.json \
|
||||||
--output ./frontend/lib/api/types
|
--output ./frontend/lib/api/types
|
||||||
- python3 ./scripts/process-types.py ./frontend/lib/api/types/data-contracts.ts
|
- python3 ./scripts/process-types.py ./frontend/lib/api/types/data-contracts.ts
|
||||||
sources:
|
sources:
|
||||||
|
|
16
backend/app/api/handlers/debughandlers/debug.go
Normal file
16
backend/app/api/handlers/debughandlers/debug.go
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package debughandlers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"expvar"
|
||||||
|
"net/http"
|
||||||
|
"net/http/pprof"
|
||||||
|
)
|
||||||
|
|
||||||
|
func New(mux *http.ServeMux) {
|
||||||
|
mux.HandleFunc("/debug/pprof", pprof.Index)
|
||||||
|
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
|
||||||
|
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
|
||||||
|
mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
|
||||||
|
mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
|
||||||
|
mux.Handle("/debug/vars", expvar.Handler())
|
||||||
|
}
|
|
@ -2,13 +2,14 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
atlas "ariga.io/atlas/sql/migrate"
|
atlas "ariga.io/atlas/sql/migrate"
|
||||||
"entgo.io/ent/dialect/sql/schema"
|
"entgo.io/ent/dialect/sql/schema"
|
||||||
"github.com/hay-kot/homebox/backend/app/api/docs"
|
"github.com/hay-kot/homebox/backend/app/api/static/docs"
|
||||||
"github.com/hay-kot/homebox/backend/ent"
|
"github.com/hay-kot/homebox/backend/ent"
|
||||||
"github.com/hay-kot/homebox/backend/internal/config"
|
"github.com/hay-kot/homebox/backend/internal/config"
|
||||||
"github.com/hay-kot/homebox/backend/internal/migrations"
|
"github.com/hay-kot/homebox/backend/internal/migrations"
|
||||||
|
@ -153,5 +154,14 @@ func run(cfg *config.Config) error {
|
||||||
app.SetupDemo()
|
app.SetupDemo()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cfg.Debug.Enabled {
|
||||||
|
debugrouter := app.debugRouter()
|
||||||
|
go func() {
|
||||||
|
if err := http.ListenAndServe(":"+cfg.Debug.Port, debugrouter); err != nil {
|
||||||
|
log.Fatal().Err(err).Msg("failed to start debug server")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
return app.server.Start(routes)
|
return app.server.Start(routes)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,8 +11,9 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
"github.com/go-chi/chi/v5"
|
||||||
_ "github.com/hay-kot/homebox/backend/app/api/docs"
|
"github.com/hay-kot/homebox/backend/app/api/handlers/debughandlers"
|
||||||
v1 "github.com/hay-kot/homebox/backend/app/api/v1"
|
v1 "github.com/hay-kot/homebox/backend/app/api/handlers/v1"
|
||||||
|
_ "github.com/hay-kot/homebox/backend/app/api/static/docs"
|
||||||
"github.com/hay-kot/homebox/backend/internal/repo"
|
"github.com/hay-kot/homebox/backend/internal/repo"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
httpSwagger "github.com/swaggo/http-swagger" // http-swagger middleware
|
httpSwagger "github.com/swaggo/http-swagger" // http-swagger middleware
|
||||||
|
@ -23,10 +24,17 @@ const prefix = "/api"
|
||||||
var (
|
var (
|
||||||
ErrDir = errors.New("path is dir")
|
ErrDir = errors.New("path is dir")
|
||||||
|
|
||||||
//go:embed all:public/*
|
//go:embed all:static/public/*
|
||||||
public embed.FS
|
public embed.FS
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (a *app) debugRouter() *http.ServeMux {
|
||||||
|
dbg := http.NewServeMux()
|
||||||
|
debughandlers.New(dbg)
|
||||||
|
|
||||||
|
return dbg
|
||||||
|
}
|
||||||
|
|
||||||
// registerRoutes registers all the routes for the API
|
// registerRoutes registers all the routes for the API
|
||||||
func (a *app) newRouter(repos *repo.AllRepos) *chi.Mux {
|
func (a *app) newRouter(repos *repo.AllRepos) *chi.Mux {
|
||||||
registerMimes()
|
registerMimes()
|
||||||
|
|
|
@ -24,6 +24,12 @@ type Config struct {
|
||||||
Swagger SwaggerConf `yaml:"swagger"`
|
Swagger SwaggerConf `yaml:"swagger"`
|
||||||
Demo bool `yaml:"demo"`
|
Demo bool `yaml:"demo"`
|
||||||
AllowRegistration bool `yaml:"disable_registration" conf:"default:true"`
|
AllowRegistration bool `yaml:"disable_registration" conf:"default:true"`
|
||||||
|
Debug DebugConf `yaml:"debug"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DebugConf struct {
|
||||||
|
Enabled bool `yaml:"enabled" conf:"default:false"`
|
||||||
|
Port string `yaml:"port" conf:"default:4000"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SwaggerConf struct {
|
type SwaggerConf struct {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue