core/internal/app/service_data_sync.go

46 lines
1.1 KiB
Go

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("")
}