func()

in lambda/go/update-episode-status/main.go [27:58]


func (h *Handler) Handle(ctx context.Context, input InputEvent) (
	string, error,
) {
	log.Println("updating episode status,", input)

	exp, err := ddbexp.NewBuilder().WithUpdate(
		ddbexp.Set(
			ddbexp.Name("status"),
			ddbexp.Value(input.Status),
		),
	).Build()
	if err != nil {
		return "", fmt.Errorf("failed to build update expression, %w", err)
	}

	_, err = h.ddbClient.UpdateItem(ctx, &ddb.UpdateItemInput{
		TableName: &h.episodeTableName,
		Key: workshop.Episode{
			ID: input.EpisodeID,
		}.AttributeValuePrimaryKey(),
		UpdateExpression:          exp.Update(),
		ExpressionAttributeNames:  exp.Names(),
		ExpressionAttributeValues: exp.Values(),
	})
	if err != nil {
		return "", fmt.Errorf("failed to update episode, %w", err)
	}

	log.Printf("episode %v updated, %v", input.EpisodeID, input.Status)

	return input.Status, nil
}