package app import ( "context" "fmt" "gitea.dwysokinski.me/twhelp/corev3/internal/domain" ) type DataSyncService struct { versionSvc *VersionService serverPub ServerPublisher } func NewDataSyncService(versionSvc *VersionService, serverPub ServerPublisher) *DataSyncService { return &DataSyncService{versionSvc: versionSvc, serverPub: serverPub} } func (svc *DataSyncService) TriggerDataSync(ctx context.Context) error { versions, err := svc.versionSvc.List(ctx, domain.NewListVersionsParams()) if err != nil { return err } payloads := make([]domain.SyncServersCmdPayload, 0, len(versions)) for _, v := range versions { p, payloadErr := domain.NewSyncServersCmdPayload(v.Code(), v.URL()) if payloadErr != nil { return fmt.Errorf("couldn't construct domain.SyncServersCmdPayload (version=%s): %w", v.Code(), payloadErr) } payloads = append(payloads, p) } if err = svc.serverPub.CmdSync(ctx, payloads...); err != nil { return fmt.Errorf("couldn't publish commands: %w", err) } return err } func (svc *DataSyncService) TriggerEnnoblementSync(_ context.Context) error { panic("") }