( req contract.FanOutTaskRunsRequest, maxDesignations int, )
| 1435 | } |
| 1436 | |
| 1437 | func prepareFanOutTaskRunsRequest( |
| 1438 | req contract.FanOutTaskRunsRequest, |
| 1439 | maxDesignations int, |
| 1440 | ) ([]preparedFanOutDesignation, error) { |
| 1441 | if len(req.Designations) == 0 { |
| 1442 | return nil, NewTaskValidationError(errors.New("designations are required")) |
| 1443 | } |
| 1444 | if len(req.Designations) > maxDesignations { |
| 1445 | return nil, NewTaskValidationError(fmt.Errorf("designations cannot exceed %d", maxDesignations)) |
| 1446 | } |
| 1447 | if err := validateTaskChannel("fan_out_runs.network_channel", req.NetworkChannel); err != nil { |
| 1448 | return nil, err |
| 1449 | } |
| 1450 | prepared := make([]preparedFanOutDesignation, 0, len(req.Designations)) |
| 1451 | for index, designation := range req.Designations { |
| 1452 | metadata, err := fanOutDesignationMetadata(index, designation) |
| 1453 | if err != nil { |
| 1454 | return nil, err |
| 1455 | } |
| 1456 | idempotencyKey := fanOutDesignationIdempotencyKey(req.IdempotencyKey, designation, index) |
| 1457 | if idempotencyKey == "" { |
| 1458 | return nil, NewTaskValidationError(fmt.Errorf( |
| 1459 | "designations[%d].idempotency_key is required when fan_out_runs.idempotency_key is empty", |
| 1460 | index, |
| 1461 | )) |
| 1462 | } |
| 1463 | prepared = append(prepared, preparedFanOutDesignation{ |
| 1464 | idempotencyKey: idempotencyKey, |
| 1465 | metadata: metadata, |
| 1466 | }) |
| 1467 | } |
| 1468 | return prepared, nil |
| 1469 | } |
| 1470 | |
| 1471 | func enqueueFanOutTaskRuns( |
| 1472 | ctx context.Context, |
no test coverage detected