Go: add context, part10 (#17417)

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
Jin Hai
2026-07-27 16:14:23 +08:00
committed by GitHub
parent cd846cc9d4
commit 49e6181eca
10 changed files with 94 additions and 79 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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