2023-12-21 06:28:53 +00:00
|
|
|
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 {
|
2023-12-30 08:38:32 +00:00
|
|
|
return fmt.Errorf("%s: couldn't construct domain.SyncServersCmdPayload: %w", v.Code(), payloadErr)
|
2023-12-21 06:28:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
payloads = append(payloads, p)
|
|
|
|
}
|
|
|
|
|
2023-12-30 08:38:32 +00:00
|
|
|
return svc.serverPub.CmdSync(ctx, payloads...)
|
2023-12-21 06:28:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (svc *DataSyncService) TriggerEnnoblementSync(_ context.Context) error {
|
2023-12-30 08:38:32 +00:00
|
|
|
panic("unimplemented")
|
2023-12-21 06:28:53 +00:00
|
|
|
}
|