package config import ( "context" "sync" "goyomi/internal/db/queries" ) type ConfigManager struct { mu sync.RWMutex flaresolverrProxy bool queries *queries.Queries } var ( manager *ConfigManager managerOnce sync.Once ) func InitConfigManager(q *queries.Queries) { managerOnce.Do(func() { manager = &ConfigManager{queries: q} manager.loadFromDB(context.Background()) }) } func (m *ConfigManager) loadFromDB(ctx context.Context) { if m.queries == nil { return } val, err := m.queries.GetConfigValue(ctx, "flaresolverr_proxy") if err == nil && val != "" { m.flaresolverrProxy = val == "true" } } func IsFlareSolverrProxyEnabled() bool { if manager == nil { return false } manager.mu.RLock() defer manager.mu.RUnlock() return manager.flaresolverrProxy } func SetFlareSolverrProxyEnabled(ctx context.Context, enabled bool) error { if manager == nil { return nil } value := "false" if enabled { value = "true" } err := manager.queries.SetConfigValue(ctx, queries.SetConfigValueParams{ Key: "flaresolverr_proxy", Value: value, }) if err != nil { return err } manager.mu.Lock() manager.flaresolverrProxy = enabled manager.mu.Unlock() return nil }