in packages/cli/internal/pkg/aws/ddb/list_workflows.go [17:56]
func (c *Client) ListWorkflows(ctx context.Context, project, user string) ([]WorkflowSummary, error) {
pk := exp.Value(renderPartitionKey(project, user))
skPref := renderWorkflowPrefix()
keyCondition := exp.Key(pkAttrName).Equal(pk).And(exp.Key(lsi1SkAttrName).BeginsWith(skPref))
expression, err := exp.NewBuilder().WithKeyCondition(keyCondition).Build()
if err != nil {
return nil, err
}
input := &dynamodb.QueryInput{
TableName: aws.String(TableName),
KeyConditionExpression: expression.KeyCondition(),
ExpressionAttributeNames: expression.Names(),
ExpressionAttributeValues: expression.Values(),
IndexName: aws.String(Lsi1Name),
ScanIndexForward: aws.Bool(false),
}
p := dynamodb.NewQueryPaginator(c.svc, input)
uniqueWorkflows := make(map[string]WorkflowSummary)
for p.HasMorePages() {
output, err := p.NextPage(ctx)
if err != nil {
return nil, actionableerror.FindSuggestionForError(err, actionableerror.AwsErrorMessageToSuggestedActionMap)
}
var records []WorkflowInstance
err = attributevalue.UnmarshalListOfMaps(output.Items, &records)
if err != nil {
return nil, err
}
for _, record := range records {
uniqueWorkflows[record.WorkflowName] = WorkflowSummary{Name: record.WorkflowName}
}
}
var workflowSummaries []WorkflowSummary
for _, summary := range uniqueWorkflows {
workflowSummaries = append(workflowSummaries, summary)
}
return workflowSummaries, nil
}