This commit is contained in:
XOF
2025-11-20 12:24:05 +08:00
commit f28bdc751f
164 changed files with 64248 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
// Filename: internal/handlers/tokens_handler.go
package handlers
import (
"gemini-balancer/internal/errors"
"gemini-balancer/internal/models"
"gemini-balancer/internal/response"
"gemini-balancer/internal/service"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type TokensHandler struct {
db *gorm.DB
tokenManager *service.TokenManager
}
func NewTokensHandler(db *gorm.DB, tm *service.TokenManager) *TokensHandler {
return &TokensHandler{
db: db,
tokenManager: tm,
}
}
func (h *TokensHandler) GetAllTokens(c *gin.Context) {
tokensFromCache := h.tokenManager.GetAllTokens()
//TODO 可以像KeyGroupResponse一样创建一个TokenResponse DTO来整理数据
response.Success(c, tokensFromCache)
}
func (h *TokensHandler) UpdateTokens(c *gin.Context) {
var incomingTokens []*models.TokenUpdateRequest
if err := c.ShouldBindJSON(&incomingTokens); err != nil {
response.Error(c, errors.NewAPIError(errors.ErrInvalidJSON, err.Error()))
return
}
if err := h.tokenManager.BatchUpdateTokens(incomingTokens); err != nil {
response.Error(c, errors.NewAPIError(errors.ErrInternalServer, "Failed to update tokens: "+err.Error()))
return
}
response.Success(c, gin.H{"message": "Tokens updated successfully."})
}
// [TODO]
// func (h *TokensHandler) CreateToken(c *gin.Context) {
// ... 数据库写操作 ...
// h.tokenManager.Invalidate() // 写后,立即让缓存失效
// }