mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-04 00:15:28 +08:00
71 lines
3.4 KiB
Go
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
|
|
}
|