mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-25 09:53:29 +08:00
Go: add context to DAO (#17269)
### Summary DAO layer doesn't use context, this PR is to fix it. --------- Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@@ -432,7 +432,8 @@ func (h *Handler) ListUserAPITokens(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
apiKeys, err := h.service.ListUserAPITokens(username)
|
||||
ctx := c.Request.Context()
|
||||
apiKeys, err := h.service.ListUserAPITokens(ctx, username)
|
||||
if err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
@@ -448,7 +449,8 @@ func (h *Handler) GenerateUserAPIToken(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
apiKey, err := h.service.GenerateUserAPIToken(username)
|
||||
ctx := c.Request.Context()
|
||||
apiKey, err := h.service.GenerateUserAPIToken(ctx, username)
|
||||
if err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
@@ -471,7 +473,8 @@ func (h *Handler) DeleteUserAPIToken(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if err = h.service.DeleteUserAPIToken(username, key); err != nil {
|
||||
ctx := c.Request.Context()
|
||||
if err = h.service.DeleteUserAPIToken(ctx, username, key); err != nil {
|
||||
common.ErrorWithCode(c, common.CodeBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"crypto/tls"
|
||||
"encoding/base64"
|
||||
@@ -840,7 +841,7 @@ func (s *Service) GetUserAgents(username string) ([]map[string]interface{}, erro
|
||||
// API Key methods
|
||||
|
||||
// ListUserAPITokens get user API keys
|
||||
func (s *Service) ListUserAPITokens(username string) ([]map[string]interface{}, error) {
|
||||
func (s *Service) ListUserAPITokens(ctx context.Context, username string) ([]map[string]interface{}, error) {
|
||||
// 1. Get user details
|
||||
user, err := s.userDAO.GetByEmail(username)
|
||||
if err != nil {
|
||||
@@ -856,7 +857,7 @@ func (s *Service) ListUserAPITokens(username string) ([]map[string]interface{},
|
||||
tenantID := userTenants[0].TenantID
|
||||
|
||||
// 3. Get API tokens by tenant ID
|
||||
tokens, err := s.apiTokenDAO.GetByTenantID(tenantID)
|
||||
tokens, err := s.apiTokenDAO.GetByTenantID(ctx, tenantID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get API tokens: %w", err)
|
||||
}
|
||||
@@ -881,7 +882,7 @@ func (s *Service) ListUserAPITokens(username string) ([]map[string]interface{},
|
||||
}
|
||||
|
||||
// GenerateUserAPIToken generate API key for user
|
||||
func (s *Service) GenerateUserAPIToken(username string) (map[string]interface{}, error) {
|
||||
func (s *Service) GenerateUserAPIToken(ctx context.Context, username string) (map[string]interface{}, error) {
|
||||
// 1. Get user details
|
||||
user, err := s.userDAO.GetByEmail(username)
|
||||
if err != nil {
|
||||
@@ -907,7 +908,7 @@ func (s *Service) GenerateUserAPIToken(username string) (map[string]interface{},
|
||||
}
|
||||
|
||||
// 4. Save API token
|
||||
if err = s.apiTokenDAO.Create(apiToken); err != nil {
|
||||
if err = s.apiTokenDAO.Create(ctx, apiToken); err != nil {
|
||||
return nil, fmt.Errorf("failed to generate API key: %w", err)
|
||||
}
|
||||
|
||||
@@ -923,7 +924,7 @@ func (s *Service) GenerateUserAPIToken(username string) (map[string]interface{},
|
||||
}
|
||||
|
||||
// DeleteUserAPIToken delete user API key
|
||||
func (s *Service) DeleteUserAPIToken(username, key string) error {
|
||||
func (s *Service) DeleteUserAPIToken(ctx context.Context, username, key string) error {
|
||||
// 1. Get user details
|
||||
user, err := s.userDAO.GetByEmail(username)
|
||||
if err != nil {
|
||||
@@ -939,7 +940,7 @@ func (s *Service) DeleteUserAPIToken(username, key string) error {
|
||||
tenantID := userTenants[0].TenantID
|
||||
|
||||
// 3. Delete API token
|
||||
rowsAffected, err := s.apiTokenDAO.DeleteByTenantIDAndToken(tenantID, key)
|
||||
rowsAffected, err := s.apiTokenDAO.DeleteByTenantIDAndToken(ctx, tenantID, key)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete API key: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user