feat(t224): add incremental freight sync
This commit is contained in:
@@ -270,21 +270,57 @@ func (adapter *UsecaseAdapter) CreateFreightSync(
|
||||
if adapter.freight == nil {
|
||||
return FreightSync{}, ErrUnavailable
|
||||
}
|
||||
result, err := adapter.freight.CreateOrderSync(
|
||||
ctx,
|
||||
usecase.CreateFreightSyncCommand{
|
||||
CreatorSubject: localAdminSubject,
|
||||
ActorUserID: input.ActorUserID,
|
||||
IdempotencyKey: input.IdempotencyKey,
|
||||
OrderNumber: input.OrderNumber,
|
||||
},
|
||||
)
|
||||
var result usecase.CreateFreightSyncResult
|
||||
var err error
|
||||
if input.Mode == domain.FreightSyncCreatedRange {
|
||||
result, err = adapter.freight.CreateDateSync(
|
||||
ctx,
|
||||
usecase.CreateFreightDateSyncCommand{
|
||||
CreatorSubject: localAdminSubject,
|
||||
ActorUserID: input.ActorUserID,
|
||||
IdempotencyKey: input.IdempotencyKey,
|
||||
CreatedFrom: input.CreatedFrom,
|
||||
CreatedTo: input.CreatedTo,
|
||||
SyncToNow: input.SyncToNow,
|
||||
},
|
||||
)
|
||||
} else {
|
||||
result, err = adapter.freight.CreateOrderSync(
|
||||
ctx,
|
||||
usecase.CreateFreightSyncCommand{
|
||||
CreatorSubject: localAdminSubject,
|
||||
ActorUserID: input.ActorUserID,
|
||||
IdempotencyKey: input.IdempotencyKey,
|
||||
OrderNumber: input.OrderNumber,
|
||||
},
|
||||
)
|
||||
}
|
||||
if err != nil {
|
||||
return FreightSync{}, mapUsecaseError(err)
|
||||
}
|
||||
return freightSyncFrom(result.Run), nil
|
||||
}
|
||||
|
||||
func (adapter *UsecaseAdapter) GetFreightWatermark(
|
||||
ctx context.Context,
|
||||
) (*FreightWatermark, error) {
|
||||
if adapter.freight == nil {
|
||||
return nil, ErrUnavailable
|
||||
}
|
||||
watermark, err := adapter.freight.GetWatermark(ctx, localAdminSubject)
|
||||
if err != nil {
|
||||
return nil, mapUsecaseError(err)
|
||||
}
|
||||
if watermark == nil {
|
||||
return nil, nil
|
||||
}
|
||||
return &FreightWatermark{
|
||||
LastSuccessfulTo: watermark.LastSuccessfulTo,
|
||||
LastSuccessfulRunID: watermark.LastSuccessfulRunID,
|
||||
UpdatedAt: watermark.UpdatedAt,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func freightOrderFrom(order domain.FreightOrder) FreightOrder {
|
||||
result := FreightOrder{
|
||||
ID: order.ID,
|
||||
@@ -308,12 +344,18 @@ func freightOrderFrom(order domain.FreightOrder) FreightOrder {
|
||||
|
||||
func freightSyncFrom(run domain.FreightSyncRun) FreightSync {
|
||||
result := FreightSync{
|
||||
ID: run.ID,
|
||||
Status: string(run.Status),
|
||||
ErrorCode: stringValue(run.ErrorCode),
|
||||
OrderCount: run.OrderCount,
|
||||
ItemCount: run.ItemCount,
|
||||
CreatedAt: run.CreatedAt,
|
||||
ID: run.ID,
|
||||
Mode: run.Mode,
|
||||
CreatedFrom: run.CreatedFrom,
|
||||
CreatedTo: run.CreatedTo,
|
||||
Status: string(run.Status),
|
||||
ErrorCode: stringValue(run.ErrorCode),
|
||||
OrderCount: run.OrderCount,
|
||||
ItemCount: run.ItemCount,
|
||||
CreatedAt: run.CreatedAt,
|
||||
}
|
||||
if run.WatermarkThrough != nil {
|
||||
result.WatermarkThrough = *run.WatermarkThrough
|
||||
}
|
||||
if run.FinishedAt != nil {
|
||||
result.FinishedAt = *run.FinishedAt
|
||||
|
||||
Reference in New Issue
Block a user