func()

in lambda/go/add-podcasts/main.go [261:293]


func (h *Handler) writeEpisodes(ctx context.Context, episodes []workshop.Episode) error {
	writeRequests := make([]ddbtypes.WriteRequest, 0, len(episodes))

	for _, episode := range episodes {
		av, err := ddbav.MarshalMap(episode)
		if err != nil {
			return fmt.Errorf("failed to marshal episodes for DynamoDB, %w", err)
		}

		writeRequests = append(writeRequests, ddbtypes.WriteRequest{
			PutRequest: &ddbtypes.PutRequest{
				Item: av,
			},
		})
	}

	unprocessedItems := map[string][]ddbtypes.WriteRequest{
		h.episodeTableName: writeRequests,
	}

	for len(unprocessedItems) != 0 {
		resp, err := h.ddbClient.BatchWriteItem(ctx, &ddb.BatchWriteItemInput{
			RequestItems: unprocessedItems,
		})
		if err != nil {
			return fmt.Errorf("failed to write episodes to DynamoDB, %w", err)
		}
		unprocessedItems = resp.UnprocessedItems
		log.Printf("BatchWriteItem returned with %v unprocessed items", len(unprocessedItems))
	}

	return nil
}