2025-05-17 11:36:26 -04:00

60 lines
1.3 KiB
Go

package services
import (
"context"
"daemonService/internal/models"
"daemonService/internal/models/obtencionCodigos"
"log"
"sync"
)
func RunAllServices(ctx context.Context, services []models.SoapService, isCron bool) []error {
var errors []error
var wg sync.WaitGroup
var mu sync.Mutex
for _, service := range services {
s := service
wg.Add(1)
go func() {
defer wg.Done()
serviceCtx, cancel := context.WithCancel(ctx)
defer cancel()
_, err := s.Execute(serviceCtx, nil, isCron)
if err != nil {
mu.Lock()
errors = append(errors, err)
mu.Unlock()
}
}()
}
wg.Wait()
log.Println("Todos los servicios han sido ejecutados")
return errors
}
func RunAllGetCodeServices(ctx context.Context, services []obtencionCodigos.CuisService, isCron bool) []error {
var errors []error
var wg sync.WaitGroup
var mu sync.Mutex
for _, service := range services {
s := service
wg.Add(1)
go func() {
defer wg.Done()
serviceCtx, cancel := context.WithCancel(ctx)
defer cancel()
_, err := s.ExecuteGetCode(serviceCtx, nil, nil, isCron)
if err != nil {
mu.Lock()
errors = append(errors, err)
mu.Unlock()
}
}()
}
wg.Wait()
log.Println("Todos los servicios han sido ejecutados Obtener Codigos")
return errors
}