diff --git a/internal/admin/handler.go b/internal/admin/handler.go index afa2889f22..2c9904fccd 100644 --- a/internal/admin/handler.go +++ b/internal/admin/handler.go @@ -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 } diff --git a/internal/admin/service.go b/internal/admin/service.go index 9a4ef3863e..325408b59a 100644 --- a/internal/admin/service.go +++ b/internal/admin/service.go @@ -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 diff --git a/internal/agent/sandbox/aliyun.go b/internal/agent/sandbox/aliyun.go index 8eb5f2a83e..1fea548e5f 100644 --- a/internal/agent/sandbox/aliyun.go +++ b/internal/agent/sandbox/aliyun.go @@ -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) } diff --git a/internal/agent/sandbox/manager.go b/internal/agent/sandbox/manager.go index b7d6686a5a..6f4762a75d 100644 --- a/internal/agent/sandbox/manager.go +++ b/internal/agent/sandbox/manager.go @@ -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 } diff --git a/internal/agent/sandbox/manager_client.go b/internal/agent/sandbox/manager_client.go index d514f6fa26..8ee99a7fbc 100644 --- a/internal/agent/sandbox/manager_client.go +++ b/internal/agent/sandbox/manager_client.go @@ -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 } } diff --git a/internal/agent/sandbox/manager_test.go b/internal/agent/sandbox/manager_test.go index 386c3db3fb..e27507635d 100644 --- a/internal/agent/sandbox/manager_test.go +++ b/internal/agent/sandbox/manager_test.go @@ -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 { diff --git a/internal/agent/sandbox/self_managed.go b/internal/agent/sandbox/self_managed.go index 2ae90f4e4e..3476c0d71e 100644 --- a/internal/agent/sandbox/self_managed.go +++ b/internal/agent/sandbox/self_managed.go @@ -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 diff --git a/internal/dao/system_settings.go b/internal/dao/system_settings.go index dd7762e42e..83e154de5b 100644 --- a/internal/dao/system_settings.go +++ b/internal/dao/system_settings.go @@ -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, diff --git a/internal/handler/system.go b/internal/handler/system.go index 252a81299e..f7b767f979 100644 --- a/internal/handler/system.go +++ b/internal/handler/system.go @@ -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 diff --git a/internal/service/system.go b/internal/service/system.go index c89909ef88..33076a358f 100644 --- a/internal/service/system.go +++ b/internal/service/system.go @@ -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