Files
OpenFlare/internal/router/v1/admin.go
T
ryan 5016103774 refactor(router): split route registration into v1 package categorizations
- Created `internal/router/v1` subpackage
- Split routes into `admin.go`, `user.go`, `public.go`, and `custom.go`
- Cleaned up imports and helper registration functions from `router.go`
- Removed obsolete `internal/router/custom.go`
2026-06-15 23:30:16 +08:00

148 lines
6.1 KiB
Go

// Copyright 2026 Arctel.net
// SPDX-License-Identifier: Apache-2.0
// Package v1 contains router registrations for API V1
package v1
import (
"github.com/Rain-kl/Wavelet/internal/apps/admin"
admin_auth_source "github.com/Rain-kl/Wavelet/internal/apps/admin/auth_source"
admin_cache "github.com/Rain-kl/Wavelet/internal/apps/admin/cache"
admin_db_manage "github.com/Rain-kl/Wavelet/internal/apps/admin/db_manage"
admin_logs "github.com/Rain-kl/Wavelet/internal/apps/admin/logs"
admin_push "github.com/Rain-kl/Wavelet/internal/apps/admin/push"
admin_status "github.com/Rain-kl/Wavelet/internal/apps/admin/status"
admin_task "github.com/Rain-kl/Wavelet/internal/apps/admin/task"
admin_template "github.com/Rain-kl/Wavelet/internal/apps/admin/template"
admin_updater "github.com/Rain-kl/Wavelet/internal/apps/admin/updater"
admin_user "github.com/Rain-kl/Wavelet/internal/apps/admin/user"
"github.com/Rain-kl/Wavelet/internal/apps/admin/system_config"
"github.com/Rain-kl/Wavelet/internal/apps/oauth"
"github.com/Rain-kl/Wavelet/internal/apps/upload"
"github.com/gin-gonic/gin"
)
// RegisterAdminRoutes registers all admin-related routes.
func RegisterAdminRoutes(apiV1Router *gin.RouterGroup) {
adminRouter := apiV1Router.Group("/admin")
adminRouter.Use(oauth.LoginRequired(), admin.LoginAdminRequired())
{
// System status
adminRouter.GET("/status", admin_status.GetSystemStatus)
// Database info & export
adminRouter.GET("/db-info", admin_status.GetDatabaseInfo)
adminRouter.GET("/db-export", admin_status.ExportDatabase)
// Database management
adminRouter.GET("/db-manage/overview", admin_db_manage.GetDBOverview)
adminRouter.GET("/db-manage/tables", admin_db_manage.ListDBTables)
adminRouter.GET("/db-manage/table-data", admin_db_manage.GetDBTableData)
adminRouter.POST("/db-manage/query", admin_db_manage.ExecuteSQL)
// Cache management
adminRouter.GET("/cache/status", admin_cache.GetCacheStatus)
adminRouter.POST("/cache/config", admin_cache.UpdateCacheConfig)
adminRouter.POST("/cache/clear", admin_cache.ClearCache)
// Application update
adminRouter.GET("/update", admin_updater.GetUpdateStatus)
adminRouter.POST("/update/apply", admin_updater.ApplyUpdate)
// System logs
adminRouter.GET("/logs", admin_logs.GetLogs)
adminRouter.GET("/logs/access", admin_logs.GetAccessLogs)
adminRouter.GET("/logs/analytics", admin_logs.GetLogsAnalytics)
adminRouter.GET("/logs/ws", admin_logs.HandleLogWebSocket)
// Task dispatch
registerAdminTaskRoutes(adminRouter)
// Users
adminRouter.GET("/users", admin_user.ListUsers)
adminRouter.POST("/users", admin_user.CreateUser)
adminRouter.GET("/users/:id", admin_user.GetUser)
adminRouter.PUT("/users/:id/status", admin_user.UpdateUserStatus)
adminRouter.DELETE("/users/:id", admin_user.DeleteUser)
// Uploads
registerAdminUploadRoutes(adminRouter)
// System Config
adminRouter.POST("/system-configs", system_config.CreateSystemConfig)
adminRouter.GET("/system-configs", system_config.ListSystemConfigs)
adminRouter.POST("/system-configs/smtp/test", system_config.TestSMTP)
systemConfigRouter := adminRouter.Group("/system-configs/:key")
{
systemConfigRouter.GET("", system_config.GetSystemConfig)
systemConfigRouter.PUT("", system_config.UpdateSystemConfig)
}
// Templates
adminRouter.GET("/templates", admin_template.ListTemplates)
adminRouter.POST("/templates", admin_template.CreateTemplate)
templateRouter := adminRouter.Group("/templates/:key")
{
templateRouter.GET("", admin_template.GetTemplate)
templateRouter.PUT("", admin_template.UpdateTemplate)
templateRouter.DELETE("", admin_template.DeleteTemplate)
}
// Auth Sources
adminRouter.GET("/auth-sources", admin_auth_source.ListAuthSources)
adminRouter.POST("/auth-sources", admin_auth_source.CreateAuthSource)
adminRouter.PUT("/auth-sources/:id", admin_auth_source.UpdateAuthSource)
adminRouter.PUT("/auth-sources/:id/toggle", admin_auth_source.ToggleAuthSource)
adminRouter.DELETE("/auth-sources/:id", admin_auth_source.DeleteAuthSource)
// Push Notifications
adminRouter.GET("/push/events", admin_push.ListEvents)
adminRouter.GET("/push/events/builtin", admin_push.ListBuiltInEvents)
adminRouter.POST("/push/events", admin_push.CreateEvent)
adminRouter.PUT("/push/events/:id", admin_push.UpdateEvent)
adminRouter.DELETE("/push/events/:id", admin_push.DeleteEvent)
adminRouter.POST("/push/events/:id/toggle", admin_push.ToggleEvent)
adminRouter.GET("/push/histories", admin_push.ListHistories)
adminRouter.POST("/push/test", admin_push.TestPush)
// Message Channels CRUD
adminRouter.GET("/push/channels/definitions", admin_push.ListChannelDefinitions)
adminRouter.GET("/push/channels", admin_push.ListChannels)
adminRouter.POST("/push/channels", admin_push.CreateChannel)
adminRouter.PUT("/push/channels/:id", admin_push.UpdateChannel)
adminRouter.DELETE("/push/channels/:id", admin_push.DeleteChannel)
adminRouter.POST("/push/channels/test", admin_push.TestChannel)
}
}
func registerAdminTaskRoutes(adminRouter *gin.RouterGroup) {
// Task dispatch
adminRouter.GET("/tasks/types", admin_task.ListTaskTypes)
adminRouter.POST("/tasks/dispatch", admin_task.DispatchTask)
// Task executions
adminRouter.GET("/tasks/executions", admin_task.ListTaskExecutions)
adminRouter.GET("/tasks/executions/:id", admin_task.GetTaskExecution)
adminRouter.POST("/tasks/executions/:id/retry", admin_task.RetryTask)
// Task schedules
adminRouter.GET("/tasks/schedules", admin_task.ListSchedules)
adminRouter.POST("/tasks/schedules", admin_task.CreateSchedule)
adminRouter.PUT("/tasks/schedules/:id", admin_task.UpdateSchedule)
adminRouter.DELETE("/tasks/schedules/:id", admin_task.DeleteSchedule)
}
func registerAdminUploadRoutes(adminRouter *gin.RouterGroup) {
adminUploadsRouter := adminRouter.Group("/uploads")
{
adminUploadsRouter.GET("", upload.ListFiles)
adminUploadsRouter.GET("/stats", upload.GetFileStats)
adminUploadsRouter.DELETE("/:id", upload.DeleteFile)
adminUploadsRouter.GET("/download/:id", upload.DownloadFile)
adminUploadsRouter.POST("/download/batch", upload.BatchDownloadFiles)
adminUploadsRouter.GET("/types", upload.GetDistinctUploadTypes)
}
}