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:
Jin Hai
2026-07-23 12:15:58 +08:00
committed by GitHub
parent 7b29fc10ca
commit 5478f955ab
45 changed files with 723 additions and 578 deletions

View File

@@ -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
}

View File

@@ -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)
}