New
This commit is contained in:
51
internal/handlers/tokens_handler.go
Normal file
51
internal/handlers/tokens_handler.go
Normal 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() // 写后,立即让缓存失效
|
||||
// }
|
||||
Reference in New Issue
Block a user