mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-28 11:48:10 +08:00
Go: add context, part10 (#17417)
Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@@ -599,10 +599,11 @@ func (h *Handler) RestartService(c *gin.Context) {
|
||||
|
||||
// ListVariables handle list variables
|
||||
func (h *Handler) ListVariables(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
// Check if request has body content
|
||||
if c.Request.ContentLength == 0 || c.Request.ContentLength == -1 {
|
||||
// List all variables
|
||||
variables, err := h.service.ListAllVariables()
|
||||
variables, err := h.service.ListAllVariables(ctx)
|
||||
if err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
@@ -625,7 +626,7 @@ func (h *Handler) ListVariables(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
variable, err := h.service.GetVariable(req.VarName)
|
||||
variable, err := h.service.GetVariable(ctx, req.VarName)
|
||||
if err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
@@ -647,7 +648,8 @@ func (h *Handler) ShowVariable(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
variable, err := h.service.GetVariable(varName)
|
||||
ctx := c.Request.Context()
|
||||
variable, err := h.service.GetVariable(ctx, varName)
|
||||
if err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
@@ -681,7 +683,8 @@ func (h *Handler) SetVariable(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.service.SetVariable(req.VarName, req.VarValue); err != nil {
|
||||
ctx := c.Request.Context()
|
||||
if err := h.service.SetVariable(ctx, req.VarName, req.VarValue); err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1458,14 +1458,14 @@ func NewAdminException(message string) *AdminException {
|
||||
// GetVariable get variable by name
|
||||
// Returns the exact system setting with the given name, or settings matching the
|
||||
// given name prefix when an exact setting does not exist.
|
||||
func (s *Service) GetVariable(varName string) ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetByName(varName)
|
||||
func (s *Service) GetVariable(ctx context.Context, varName string) ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetByName(ctx, dao.DB, varName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(settings) == 0 {
|
||||
settings, err = s.systemSettingsDAO.GetByNamePrefix(varName)
|
||||
settings, err = s.systemSettingsDAO.GetByNamePrefix(ctx, dao.DB, varName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1478,8 +1478,8 @@ func (s *Service) GetVariable(varName string) ([]map[string]interface{}, error)
|
||||
|
||||
// ListAllVariables list all variables
|
||||
// Returns all system settings from database
|
||||
func (s *Service) ListAllVariables() ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetAll()
|
||||
func (s *Service) ListAllVariables(ctx context.Context) ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetAll(ctx, dao.DB)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1490,8 +1490,8 @@ func (s *Service) ListAllVariables() ([]map[string]interface{}, error) {
|
||||
// SetVariable set variable
|
||||
// Creates or updates a system setting
|
||||
// If the setting exists, updates it; otherwise creates a new one
|
||||
func (s *Service) SetVariable(varName, varValue string) error {
|
||||
settings, err := s.systemSettingsDAO.GetByName(varName)
|
||||
func (s *Service) SetVariable(ctx context.Context, varName, varValue string) error {
|
||||
settings, err := s.systemSettingsDAO.GetByName(ctx, dao.DB, varName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1502,7 +1502,7 @@ func (s *Service) SetVariable(varName, varValue string) error {
|
||||
return err
|
||||
}
|
||||
setting.Value = varValue
|
||||
return s.systemSettingsDAO.UpdateByName(varName, setting)
|
||||
return s.systemSettingsDAO.UpdateByName(ctx, dao.DB, varName, setting)
|
||||
} else if len(settings) > 1 {
|
||||
return NewAdminException("Can't update more than 1 setting: " + varName)
|
||||
}
|
||||
@@ -1517,7 +1517,7 @@ func (s *Service) SetVariable(varName, varValue string) error {
|
||||
if err = common.ValidateSystemSettingValue(*newSetting, varValue); err != nil {
|
||||
return err
|
||||
}
|
||||
return s.systemSettingsDAO.Create(newSetting)
|
||||
return s.systemSettingsDAO.Create(ctx, dao.DB, newSetting)
|
||||
}
|
||||
|
||||
// Config methods
|
||||
|
||||
@@ -326,7 +326,7 @@ func (p *AliyunCodeInterpreterProvider) ExecuteCode(
|
||||
} `json:"results"`
|
||||
ContextID string `json:"contextId"`
|
||||
}
|
||||
if err := json.Unmarshal(respBody, &parsed); err != nil {
|
||||
if err = json.Unmarshal(respBody, &parsed); err != nil {
|
||||
return nil, fmt.Errorf("aliyun: decode execute response: %w", err)
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,8 @@ import (
|
||||
|
||||
"ragflow/internal/dao"
|
||||
"ragflow/internal/entity"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// ProviderManager is the Go equivalent of
|
||||
@@ -145,7 +147,7 @@ type SystemSetting = entity.SystemSettings
|
||||
// *dao.SystemSettingsDAO directly) makes the manager unit-testable
|
||||
// without a real MySQL.
|
||||
type SettingsReader interface {
|
||||
GetByName(name string) ([]entity.SystemSettings, error)
|
||||
GetByName(ctx context.Context, db *gorm.DB, name string) ([]entity.SystemSettings, error)
|
||||
}
|
||||
|
||||
// LoadFromSettings resolves the active provider from the admin-panel
|
||||
@@ -164,14 +166,14 @@ type SettingsReader interface {
|
||||
// Subsequent calls are no-ops once a provider is loaded; use
|
||||
// Reset + ReloadFromSettings to pick up admin-panel changes.
|
||||
func (m *ProviderManager) LoadFromSettings(ctx context.Context) error {
|
||||
return m.LoadFromSettingsWithReader(ctx, dao.NewSystemSettingsDAO())
|
||||
return m.LoadFromSettingsWithReader(ctx, dao.DB, dao.NewSystemSettingsDAO())
|
||||
}
|
||||
|
||||
// LoadFromSettingsWithReader is the testable seam for
|
||||
// LoadFromSettings. Production code calls LoadFromSettings (which
|
||||
// uses the real *dao.SystemSettingsDAO); tests inject a fake
|
||||
// SettingsReader.
|
||||
func (m *ProviderManager) LoadFromSettingsWithReader(ctx context.Context, r SettingsReader) error {
|
||||
func (m *ProviderManager) LoadFromSettingsWithReader(ctx context.Context, db *gorm.DB, r SettingsReader) error {
|
||||
m.mu.Lock()
|
||||
if m.loaded && m.provider != nil {
|
||||
m.mu.Unlock()
|
||||
@@ -179,7 +181,7 @@ func (m *ProviderManager) LoadFromSettingsWithReader(ctx context.Context, r Sett
|
||||
}
|
||||
m.mu.Unlock()
|
||||
|
||||
ptype, cfg, err := loadSettingsConfig(r)
|
||||
ptype, cfg, err := loadSettingsConfig(ctx, db, r)
|
||||
if err != nil {
|
||||
// Soft fall back: settings missing / malformed / DB error
|
||||
// → use env defaults. This keeps boot resilient when the
|
||||
@@ -208,23 +210,23 @@ func (m *ProviderManager) LoadFromSettingsWithReader(ctx context.Context, r Sett
|
||||
// settings. Mirrors Python's `reload_provider()` in
|
||||
// `agent/sandbox/client.py` — call after the operator updates the
|
||||
// sandbox settings.
|
||||
func (m *ProviderManager) ReloadFromSettings(ctx context.Context) error {
|
||||
return m.ReloadFromSettingsWithReader(ctx, dao.NewSystemSettingsDAO())
|
||||
func (m *ProviderManager) ReloadFromSettings(ctx context.Context, db *gorm.DB) error {
|
||||
return m.ReloadFromSettingsWithReader(ctx, db, dao.NewSystemSettingsDAO())
|
||||
}
|
||||
|
||||
// ReloadFromSettingsWithReader is the testable seam for
|
||||
// ReloadFromSettings.
|
||||
func (m *ProviderManager) ReloadFromSettingsWithReader(ctx context.Context, r SettingsReader) error {
|
||||
func (m *ProviderManager) ReloadFromSettingsWithReader(ctx context.Context, db *gorm.DB, r SettingsReader) error {
|
||||
m.Reset()
|
||||
return m.LoadFromSettingsWithReader(ctx, r)
|
||||
return m.LoadFromSettingsWithReader(ctx, db, r)
|
||||
}
|
||||
|
||||
// loadSettingsConfig reads `sandbox.provider_type` and the
|
||||
// matching `sandbox.{type}` JSON config from MySQL. Returns
|
||||
// (ProviderType, nil) when the settings table has no rows for
|
||||
// these keys (caller falls back to env).
|
||||
func loadSettingsConfig(r SettingsReader) (ProviderType, map[string]any, error) {
|
||||
rows, err := r.GetByName("sandbox.provider_type")
|
||||
func loadSettingsConfig(ctx context.Context, db *gorm.DB, r SettingsReader) (ProviderType, map[string]any, error) {
|
||||
rows, err := r.GetByName(ctx, db, "sandbox.provider_type")
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
@@ -237,7 +239,7 @@ func loadSettingsConfig(r SettingsReader) (ProviderType, map[string]any, error)
|
||||
return "", nil, errSettingsNotConfigured
|
||||
}
|
||||
|
||||
cfgRows, err := r.GetByName("sandbox." + string(ptype))
|
||||
cfgRows, err := r.GetByName(ctx, db, "sandbox."+string(ptype))
|
||||
if err != nil {
|
||||
return ptype, nil, err
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ func (c *ManagerClient) ExecuteCode(ctx context.Context, req agenttool.SandboxRe
|
||||
if result.Metadata != nil {
|
||||
if structured, ok := result.Metadata["structured_result"].(map[string]any); ok {
|
||||
resp.StructuredResult = structured
|
||||
} else if structured, ok := result.Metadata["result"].(map[string]any); ok {
|
||||
} else if structured, ok = result.Metadata["result"].(map[string]any); ok {
|
||||
resp.StructuredResult = structured
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,10 +21,13 @@ import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"ragflow/internal/dao"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"ragflow/internal/entity"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func TestProviderManager_SetGet(t *testing.T) {
|
||||
@@ -399,7 +402,7 @@ type fakeSettingsReader struct {
|
||||
fakeErr error
|
||||
}
|
||||
|
||||
func (f *fakeSettingsReader) GetByName(name string) ([]entity.SystemSettings, error) {
|
||||
func (f *fakeSettingsReader) GetByName(ctx context.Context, db *gorm.DB, name string) ([]entity.SystemSettings, error) {
|
||||
if f.fakeErr != nil {
|
||||
return nil, f.fakeErr
|
||||
}
|
||||
@@ -440,7 +443,7 @@ func TestLoadFromSettingsWithReader_HappyPath(t *testing.T) {
|
||||
},
|
||||
}
|
||||
m := &ProviderManager{}
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), r); err != nil {
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), dao.DB, r); err != nil {
|
||||
t.Fatalf("LoadFromSettingsWithReader: %v", err)
|
||||
}
|
||||
if !m.IsConfigured() {
|
||||
@@ -485,7 +488,7 @@ func TestLoadFromSettingsWithReader_EmptyFallback(t *testing.T) {
|
||||
|
||||
r := &fakeSettingsReader{rows: map[string][]entity.SystemSettings{}}
|
||||
m := &ProviderManager{}
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), r); err != nil {
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), dao.DB, r); err != nil {
|
||||
t.Fatalf("LoadFromSettingsWithReader: %v", err)
|
||||
}
|
||||
if !m.IsConfigured() {
|
||||
@@ -515,7 +518,7 @@ func TestLoadFromSettingsWithReader_DAOErrorFallback(t *testing.T) {
|
||||
|
||||
r := &fakeSettingsReader{fakeErr: errors.New("db is down")}
|
||||
m := &ProviderManager{}
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), r); err != nil {
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), dao.DB, r); err != nil {
|
||||
t.Fatalf("LoadFromSettingsWithReader (DAO error fallback): %v", err)
|
||||
}
|
||||
if got := m.Provider().ProviderType(); got != ProviderSelfManaged {
|
||||
@@ -547,7 +550,7 @@ func TestLoadFromSettingsWithReader_MalformedJSONFallback(t *testing.T) {
|
||||
},
|
||||
}
|
||||
m := &ProviderManager{}
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), r); err != nil {
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), dao.DB, r); err != nil {
|
||||
t.Fatalf("LoadFromSettingsWithReader (malformed JSON fallback): %v", err)
|
||||
}
|
||||
sm, ok := m.Provider().(*SelfManagedProvider)
|
||||
@@ -586,7 +589,7 @@ func TestLoadFromSettingsWithReader_UnknownProviderType(t *testing.T) {
|
||||
},
|
||||
}
|
||||
m := &ProviderManager{}
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), r); err != nil {
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), dao.DB, r); err != nil {
|
||||
t.Fatalf("LoadFromSettingsWithReader (unknown type fallback): %v", err)
|
||||
}
|
||||
// Falls back to env-driven self_managed, NOT the unknown type.
|
||||
@@ -610,7 +613,7 @@ func TestLoadFromSettingsWithReader_AlreadyLoaded_NoOp(t *testing.T) {
|
||||
"sandbox.provider_type": {{Name: "sandbox.provider_type", Value: "local"}},
|
||||
},
|
||||
}
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), r); err != nil {
|
||||
if err := m.LoadFromSettingsWithReader(context.Background(), dao.DB, r); err != nil {
|
||||
t.Fatalf("LoadFromSettingsWithReader: %v", err)
|
||||
}
|
||||
if m.Provider() != original {
|
||||
@@ -644,7 +647,7 @@ func TestReloadFromSettingsWithReader(t *testing.T) {
|
||||
},
|
||||
}
|
||||
m := &ProviderManager{}
|
||||
if err := m.ReloadFromSettingsWithReader(context.Background(), r); err != nil {
|
||||
if err := m.ReloadFromSettingsWithReader(context.Background(), dao.DB, r); err != nil {
|
||||
t.Fatalf("ReloadFromSettingsWithReader: %v", err)
|
||||
}
|
||||
if got := m.Provider().ProviderType(); got != ProviderSelfManaged {
|
||||
|
||||
@@ -66,10 +66,10 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"ragflow/internal/common"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"ragflow/internal/common"
|
||||
)
|
||||
|
||||
// selfManagedDefaultEndpoint is the canonical executor_manager
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"ragflow/internal/entity"
|
||||
|
||||
@@ -33,9 +34,9 @@ func NewSystemSettingsDAO() *SystemSettingsDAO {
|
||||
|
||||
// GetAll get all system settings
|
||||
// Returns all system settings records from database
|
||||
func (d *SystemSettingsDAO) GetAll() ([]entity.SystemSettings, error) {
|
||||
func (d *SystemSettingsDAO) GetAll(ctx context.Context, db *gorm.DB) ([]entity.SystemSettings, error) {
|
||||
var settings []entity.SystemSettings
|
||||
err := DB.Order("name ASC").Find(&settings).Error
|
||||
err := db.WithContext(ctx).Order("name ASC").Find(&settings).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -44,9 +45,9 @@ func (d *SystemSettingsDAO) GetAll() ([]entity.SystemSettings, error) {
|
||||
|
||||
// GetByName get system settings by name
|
||||
// Returns settings records that match the given name
|
||||
func (d *SystemSettingsDAO) GetByName(name string) ([]entity.SystemSettings, error) {
|
||||
func (d *SystemSettingsDAO) GetByName(ctx context.Context, db *gorm.DB, name string) ([]entity.SystemSettings, error) {
|
||||
var settings []entity.SystemSettings
|
||||
err := DB.Where("name = ?", name).Order("name ASC").Find(&settings).Error
|
||||
err := db.WithContext(ctx).Where("name = ?", name).Order("name ASC").Find(&settings).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -55,9 +56,9 @@ func (d *SystemSettingsDAO) GetByName(name string) ([]entity.SystemSettings, err
|
||||
|
||||
// GetByNamePrefix get system settings by name prefix
|
||||
// Returns settings records whose names start with the given prefix.
|
||||
func (d *SystemSettingsDAO) GetByNamePrefix(namePrefix string) ([]entity.SystemSettings, error) {
|
||||
func (d *SystemSettingsDAO) GetByNamePrefix(ctx context.Context, db *gorm.DB, namePrefix string) ([]entity.SystemSettings, error) {
|
||||
var settings []entity.SystemSettings
|
||||
err := DB.Where("name LIKE ?", namePrefix+"%").Order("name ASC").Find(&settings).Error
|
||||
err := db.WithContext(ctx).Where("name LIKE ?", namePrefix+"%").Order("name ASC").Find(&settings).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -66,8 +67,8 @@ func (d *SystemSettingsDAO) GetByNamePrefix(namePrefix string) ([]entity.SystemS
|
||||
|
||||
// UpdateByName update system settings by name
|
||||
// Updates the setting with the given name using the provided data
|
||||
func (d *SystemSettingsDAO) UpdateByName(name string, setting *entity.SystemSettings) error {
|
||||
return DB.Model(&entity.SystemSettings{}).
|
||||
func (d *SystemSettingsDAO) UpdateByName(ctx context.Context, db *gorm.DB, name string, setting *entity.SystemSettings) error {
|
||||
return db.WithContext(ctx).Model(&entity.SystemSettings{}).
|
||||
Where("name = ?", name).
|
||||
Updates(map[string]interface{}{
|
||||
"value": setting.Value,
|
||||
@@ -76,16 +77,16 @@ func (d *SystemSettingsDAO) UpdateByName(name string, setting *entity.SystemSett
|
||||
}).Error
|
||||
}
|
||||
|
||||
// Create create a new system setting
|
||||
// Create a new system setting
|
||||
// Inserts a new system setting record into database
|
||||
func (d *SystemSettingsDAO) Create(setting *entity.SystemSettings) error {
|
||||
return DB.Create(setting).Error
|
||||
func (d *SystemSettingsDAO) Create(ctx context.Context, db *gorm.DB, setting *entity.SystemSettings) error {
|
||||
return db.WithContext(ctx).Create(setting).Error
|
||||
}
|
||||
|
||||
// SaveOrCreate update existing setting or create new one
|
||||
// If setting exists, updates it; otherwise creates a new record
|
||||
func (d *SystemSettingsDAO) SaveOrCreate(name string, value string, source string, dataType string) error {
|
||||
settings, err := d.GetByName(name)
|
||||
func (d *SystemSettingsDAO) SaveOrCreate(ctx context.Context, db *gorm.DB, name string, value string, source string, dataType string) error {
|
||||
settings, err := d.GetByName(ctx, db, name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -95,7 +96,7 @@ func (d *SystemSettingsDAO) SaveOrCreate(name string, value string, source strin
|
||||
setting.Value = value
|
||||
setting.Source = source
|
||||
setting.DataType = dataType
|
||||
return d.UpdateByName(name, setting)
|
||||
return d.UpdateByName(ctx, db, name, setting)
|
||||
} else if len(settings) > 1 {
|
||||
return errors.New("can't update more than 1 setting: " + name)
|
||||
}
|
||||
@@ -106,25 +107,25 @@ func (d *SystemSettingsDAO) SaveOrCreate(name string, value string, source strin
|
||||
Source: source,
|
||||
DataType: dataType,
|
||||
}
|
||||
return d.Create(newSetting)
|
||||
return d.Create(ctx, db, newSetting)
|
||||
}
|
||||
|
||||
// Count get total count of system settings
|
||||
func (d *SystemSettingsDAO) Count() (int64, error) {
|
||||
func (d *SystemSettingsDAO) Count(ctx context.Context, db *gorm.DB) (int64, error) {
|
||||
var count int64
|
||||
err := DB.Model(&entity.SystemSettings{}).Count(&count).Error
|
||||
err := db.WithContext(ctx).Model(&entity.SystemSettings{}).Count(&count).Error
|
||||
return count, err
|
||||
}
|
||||
|
||||
// DeleteByName delete system setting by name
|
||||
func (d *SystemSettingsDAO) DeleteByName(name string) error {
|
||||
return DB.Where("name = ?", name).Delete(&entity.SystemSettings{}).Error
|
||||
func (d *SystemSettingsDAO) DeleteByName(ctx context.Context, db *gorm.DB, name string) error {
|
||||
return db.WithContext(ctx).Where("name = ?", name).Delete(&entity.SystemSettings{}).Error
|
||||
}
|
||||
|
||||
// Exists check if setting exists by name
|
||||
func (d *SystemSettingsDAO) Exists(name string) (bool, error) {
|
||||
func (d *SystemSettingsDAO) Exists(ctx context.Context, db *gorm.DB, name string) (bool, error) {
|
||||
var count int64
|
||||
err := DB.Model(&entity.SystemSettings{}).Where("name = ?", name).Count(&count).Error
|
||||
err := db.WithContext(ctx).Model(&entity.SystemSettings{}).Where("name = ?", name).Count(&count).Error
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
@@ -132,9 +133,9 @@ func (d *SystemSettingsDAO) Exists(name string) (bool, error) {
|
||||
}
|
||||
|
||||
// GetBySource get system settings by source
|
||||
func (d *SystemSettingsDAO) GetBySource(source string) ([]entity.SystemSettings, error) {
|
||||
func (d *SystemSettingsDAO) GetBySource(ctx context.Context, db *gorm.DB, source string) ([]entity.SystemSettings, error) {
|
||||
var settings []entity.SystemSettings
|
||||
err := DB.Where("source = ?", source).Find(&settings).Error
|
||||
err := db.WithContext(ctx).Where("source = ?", source).Find(&settings).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -142,9 +143,9 @@ func (d *SystemSettingsDAO) GetBySource(source string) ([]entity.SystemSettings,
|
||||
}
|
||||
|
||||
// GetByDataType get system settings by data type
|
||||
func (d *SystemSettingsDAO) GetByDataType(dataType string) ([]entity.SystemSettings, error) {
|
||||
func (d *SystemSettingsDAO) GetByDataType(ctx context.Context, db *gorm.DB, dataType string) ([]entity.SystemSettings, error) {
|
||||
var settings []entity.SystemSettings
|
||||
err := DB.Where("data_type = ?", dataType).Find(&settings).Error
|
||||
err := db.WithContext(ctx).Where("data_type = ?", dataType).Find(&settings).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -152,18 +153,18 @@ func (d *SystemSettingsDAO) GetByDataType(dataType string) ([]entity.SystemSetti
|
||||
}
|
||||
|
||||
// Transaction execute operations in a transaction
|
||||
func (d *SystemSettingsDAO) Transaction(fn func(tx *gorm.DB) error) error {
|
||||
return DB.Transaction(fn)
|
||||
func (d *SystemSettingsDAO) Transaction(ctx context.Context, db *gorm.DB, fn func(tx *gorm.DB) error) error {
|
||||
return db.WithContext(ctx).Transaction(fn)
|
||||
}
|
||||
|
||||
// CreateWithTx create setting within transaction
|
||||
func (d *SystemSettingsDAO) CreateWithTx(tx *gorm.DB, setting *entity.SystemSettings) error {
|
||||
return tx.Create(setting).Error
|
||||
func (d *SystemSettingsDAO) CreateWithTx(ctx context.Context, tx *gorm.DB, setting *entity.SystemSettings) error {
|
||||
return tx.WithContext(ctx).Create(setting).Error
|
||||
}
|
||||
|
||||
// UpdateByNameWithTx update setting within transaction
|
||||
func (d *SystemSettingsDAO) UpdateByNameWithTx(tx *gorm.DB, name string, setting *entity.SystemSettings) error {
|
||||
return tx.Model(&entity.SystemSettings{}).
|
||||
func (d *SystemSettingsDAO) UpdateByNameWithTx(ctx context.Context, tx *gorm.DB, name string, setting *entity.SystemSettings) error {
|
||||
return tx.WithContext(ctx).Model(&entity.SystemSettings{}).
|
||||
Where("name = ?", name).
|
||||
Updates(map[string]interface{}{
|
||||
"value": setting.Value,
|
||||
|
||||
@@ -186,7 +186,9 @@ func (h *SystemHandler) SetLogLevel(c *gin.Context) {
|
||||
|
||||
// ListVariables handle list variables
|
||||
func (h *SystemHandler) ListVariables(c *gin.Context) {
|
||||
variables, err := h.systemService.ListAllVariables()
|
||||
ctx := c.Request.Context()
|
||||
|
||||
variables, err := h.systemService.ListAllVariables(ctx)
|
||||
if err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
@@ -220,7 +222,9 @@ func (h *SystemHandler) SetVariable(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.systemService.SetVariable(req.VarName, req.VarValue); err != nil {
|
||||
ctx := c.Request.Context()
|
||||
|
||||
if err := h.systemService.SetVariable(ctx, req.VarName, req.VarValue); err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
}
|
||||
@@ -241,7 +245,9 @@ func (h *SystemHandler) ShowVariable(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
variable, err := h.systemService.ShowVariable(varName)
|
||||
ctx := c.Request.Context()
|
||||
|
||||
variable, err := h.systemService.ShowVariable(ctx, varName)
|
||||
if err != nil {
|
||||
common.ErrorWithCode(c, common.CodeServerError, err.Error())
|
||||
return
|
||||
|
||||
@@ -405,8 +405,8 @@ func (s *SystemService) Healthz(ctx context.Context) (*HealthzResponse, bool) {
|
||||
|
||||
// ListAllVariables list all variables
|
||||
// Returns all system settings from database
|
||||
func (s *SystemService) ListAllVariables() ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetAll()
|
||||
func (s *SystemService) ListAllVariables(ctx context.Context) ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetAll(ctx, dao.DB)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -414,14 +414,14 @@ func (s *SystemService) ListAllVariables() ([]map[string]interface{}, error) {
|
||||
return common.FormatSystemSettings(settings), nil
|
||||
}
|
||||
|
||||
func (s *SystemService) ShowVariable(varName string) ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetByName(varName)
|
||||
func (s *SystemService) ShowVariable(ctx context.Context, varName string) ([]map[string]interface{}, error) {
|
||||
settings, err := s.systemSettingsDAO.GetByName(ctx, dao.DB, varName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(settings) == 0 {
|
||||
settings, err = s.systemSettingsDAO.GetByNamePrefix(varName)
|
||||
settings, err = s.systemSettingsDAO.GetByNamePrefix(ctx, dao.DB, varName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -435,8 +435,8 @@ func (s *SystemService) ShowVariable(varName string) ([]map[string]interface{},
|
||||
// SetVariable set variable
|
||||
// Creates or updates a system setting
|
||||
// If the setting exists, updates it; otherwise creates a new one
|
||||
func (s *SystemService) SetVariable(varName, varValue string) error {
|
||||
settings, err := s.systemSettingsDAO.GetByName(varName)
|
||||
func (s *SystemService) SetVariable(ctx context.Context, varName, varValue string) error {
|
||||
settings, err := s.systemSettingsDAO.GetByName(ctx, dao.DB, varName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -447,7 +447,7 @@ func (s *SystemService) SetVariable(varName, varValue string) error {
|
||||
return err
|
||||
}
|
||||
setting.Value = varValue
|
||||
return s.systemSettingsDAO.UpdateByName(varName, setting)
|
||||
return s.systemSettingsDAO.UpdateByName(ctx, dao.DB, varName, setting)
|
||||
} else if len(settings) > 1 {
|
||||
return fmt.Errorf("can't update more than 1 setting: %s", varName)
|
||||
}
|
||||
@@ -462,7 +462,7 @@ func (s *SystemService) SetVariable(varName, varValue string) error {
|
||||
if err = common.ValidateSystemSettingValue(*newSetting, varValue); err != nil {
|
||||
return err
|
||||
}
|
||||
return s.systemSettingsDAO.Create(newSetting)
|
||||
return s.systemSettingsDAO.Create(ctx, dao.DB, newSetting)
|
||||
}
|
||||
|
||||
// Config methods
|
||||
|
||||
Reference in New Issue
Block a user