46 lines
1.1 KiB
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("")
|
|
}
|