func()

in lambda/go/add-podcasts/main.go [295:328]


func (h *Handler) startImport(ctx context.Context, episodes []workshop.Episode) error {
	for i, episode := range episodes {
		if episode.MediaURL == "" {
			log.Printf("skipping episode %v, has no media URL", episode.ID)
			episode.Status = workshop.EpisodeStatusComplete
			// Update execution ARN in for episode in table
			if err := h.updateEpisodeStatus(ctx, episode); err != nil {
				return fmt.Errorf("update %v failed, %v", episode.ID, err)
			}
			continue
		}

		input, err := json.Marshal(workshop.TranscribeStateMachineInput{Episode: episode})

		resp, err := h.sfnClient.StartExecution(ctx, &sfn.StartExecutionInput{
			StateMachineArn: &h.transcribeStateMachineARN,
			Input:           aws.String(string(input)),
		})
		if err != nil {
			return fmt.Errorf("failed to start episode %v transcribe, %w", episode.ID, err)
		}
		executionARN := aws.ToString(resp.ExecutionArn)
		log.Printf("starting transcribe for %v, %v", episode.ID, executionARN)

		episodes[i].TranscribeExecutionARN = executionARN

		// Update execution ARN in for episode in table
		if err := h.updateEpisodeExecutionARN(ctx, episode); err != nil {
			return fmt.Errorf("update %v failed, %v", episode.ID, err)
		}
	}

	return nil
}