MCPcopy Create free account
hub / github.com/compozy/agh / prepareFanOutTaskRunsRequest

Function prepareFanOutTaskRunsRequest

internal/api/core/tasks.go:1437–1469  ·  view source on GitHub ↗
(
	req contract.FanOutTaskRunsRequest,
	maxDesignations int,
)

Source from the content-addressed store, hash-verified

1435}
1436
1437func 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
1471func enqueueFanOutTaskRuns(
1472 ctx context.Context,

Callers 1

FanOutTaskRunsMethod · 0.85

Calls 5

NewTaskValidationErrorFunction · 0.85
appendFunction · 0.85
validateTaskChannelFunction · 0.70

Tested by

no test coverage detected