fix: ConfigService now reads subsystems from database

Critical regression fix - subsystems were hardcoded instead of reading user settings.
Added CreateDefaultSubsystems to queries/subsystems.go.
ConfigService now queries agent_subsystems table for actual user configuration.
AgentLifecycleService creates default subsystems when creating new agents.
Respects user-configured enabled/auto_run settings from UI.
This commit is contained in:
Fimeg
2025-11-10 22:32:22 -05:00
parent e1173c9f3b
commit 455bc75044
3 changed files with 74 additions and 25 deletions

View File

@@ -7,6 +7,7 @@ import (
"time"
"github.com/Fimeg/RedFlag/aggregator-server/internal/config"
"github.com/Fimeg/RedFlag/aggregator-server/internal/database/queries"
"github.com/Fimeg/RedFlag/aggregator-server/internal/models"
"github.com/google/uuid"
"github.com/jmoiron/sqlx"
@@ -35,12 +36,13 @@ type AgentConfig struct {
// AgentLifecycleService manages all agent lifecycle operations
type AgentLifecycleService struct {
db *sqlx.DB
config *config.Config
buildService *BuildService
configService *ConfigService
artifactService *ArtifactService
logger *log.Logger
db *sqlx.DB
config *config.Config
buildService *BuildService
configService *ConfigService
artifactService *ArtifactService
subsystemQueries *queries.SubsystemQueries
logger *log.Logger
}
// NewAgentLifecycleService creates a new lifecycle service
@@ -50,12 +52,13 @@ func NewAgentLifecycleService(
logger *log.Logger,
) *AgentLifecycleService {
return &AgentLifecycleService{
db: db,
config: cfg,
buildService: NewBuildService(db, cfg, logger),
configService: NewConfigService(db, cfg, logger),
artifactService: NewArtifactService(db, cfg, logger),
logger: logger,
db: db,
config: cfg,
buildService: NewBuildService(db, cfg, logger),
configService: NewConfigService(db, cfg, logger),
artifactService: NewArtifactService(db, cfg, logger),
subsystemQueries: queries.NewSubsystemQueries(db),
logger: logger,
}
}
@@ -190,7 +193,17 @@ func (s *AgentLifecycleService) createAgent(
VALUES (:id, :hostname, :os_type, :agent_version, :machine_id, :created_at, :updated_at)
`
_, err := s.db.NamedExecContext(ctx, query, agent)
return err
if err != nil {
return fmt.Errorf("agent record creation failed: %w", err)
}
// Create default subsystems for new agent
if err := s.subsystemQueries.CreateDefaultSubsystems(agent.ID); err != nil {
s.logger.Printf("Warning: failed to create default subsystems: %v", err)
// Non-fatal error - agent still created
}
return nil
}
// updateAgent updates existing agent record