Files
ds2api/internal/httpapi/admin/handler.go
2026-04-26 06:58:20 +08:00

71 lines
3.4 KiB
Go

package admin
import (
"github.com/go-chi/chi/v5"
"ds2api/internal/chathistory"
adminaccounts "ds2api/internal/httpapi/admin/accounts"
adminauth "ds2api/internal/httpapi/admin/auth"
adminconfig "ds2api/internal/httpapi/admin/configmgmt"
admindevcapture "ds2api/internal/httpapi/admin/devcapture"
adminhistory "ds2api/internal/httpapi/admin/history"
adminproxies "ds2api/internal/httpapi/admin/proxies"
adminrawsamples "ds2api/internal/httpapi/admin/rawsamples"
adminsettings "ds2api/internal/httpapi/admin/settings"
adminshared "ds2api/internal/httpapi/admin/shared"
adminvercel "ds2api/internal/httpapi/admin/vercel"
adminversion "ds2api/internal/httpapi/admin/version"
)
type Handler struct {
Store adminshared.ConfigStore
Pool adminshared.PoolController
DS adminshared.DeepSeekCaller
OpenAI adminshared.OpenAIChatCaller
ChatHistory *chathistory.Store
}
func RegisterRoutes(r chi.Router, h *Handler) {
deps := adminsharedDeps(h)
authHandler := &adminauth.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
accountsHandler := &adminaccounts.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
configHandler := &adminconfig.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
settingsHandler := &adminsettings.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
proxiesHandler := &adminproxies.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
rawSamplesHandler := &adminrawsamples.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
vercelHandler := &adminvercel.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
historyHandler := &adminhistory.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
devCaptureHandler := &admindevcapture.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
versionHandler := &adminversion.Handler{Store: deps.Store, Pool: deps.Pool, DS: deps.DS, OpenAI: deps.OpenAI, ChatHistory: deps.ChatHistory}
adminauth.RegisterPublicRoutes(r, authHandler)
r.Group(func(pr chi.Router) {
pr.Use(authHandler.RequireAdmin)
adminauth.RegisterProtectedRoutes(pr, authHandler)
adminconfig.RegisterRoutes(pr, configHandler)
adminsettings.RegisterRoutes(pr, settingsHandler)
adminproxies.RegisterRoutes(pr, proxiesHandler)
adminaccounts.RegisterRoutes(pr, accountsHandler)
adminrawsamples.RegisterRoutes(pr, rawSamplesHandler)
adminvercel.RegisterRoutes(pr, vercelHandler)
admindevcapture.RegisterRoutes(pr, devCaptureHandler)
adminhistory.RegisterRoutes(pr, historyHandler)
adminversion.RegisterRoutes(pr, versionHandler)
})
}
func adminsharedDeps(h *Handler) adminsharedDepsValue {
if h == nil {
return adminsharedDepsValue{}
}
return adminsharedDepsValue{Store: h.Store, Pool: h.Pool, DS: h.DS, OpenAI: h.OpenAI, ChatHistory: h.ChatHistory}
}
type adminsharedDepsValue struct {
Store adminshared.ConfigStore
Pool adminshared.PoolController
DS adminshared.DeepSeekCaller
OpenAI adminshared.OpenAIChatCaller
ChatHistory *chathistory.Store
}