mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-12 04:07:42 +08:00
refactor backend API structure
This commit is contained in:
70
internal/httpapi/admin/handler.go
Normal file
70
internal/httpapi/admin/handler.go
Normal file
@@ -0,0 +1,70 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user