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
}