package services import ( "fmt" "vibeStonk/server/repository" ) type SystemServices struct { AuthService AuthService StockService StockService } func (s *SystemServices) Close() []error { services := []interface{ Close() error }{ s.AuthService, s.StockService, } errs := make([]error, 0, len(services)) for _, service := range services { err := service.Close() if err != nil { errs = append(errs, err) } } if len(errs) > 0 { return errs } return nil } func NewSystemServices(config *repository.Config) (*SystemServices, error) { authService, err := NewAuthService(config) if err != nil { return nil, fmt.Errorf("failed to create system services: %w", err) } stockService, err := NewStockService(config) if err != nil { return nil, fmt.Errorf("failed to create system stock service: %w", err) } return &SystemServices{ AuthService: authService, StockService: stockService, }, nil }