diff --git a/internal/dynamo-browse/controllers/tableread.go b/internal/dynamo-browse/controllers/tableread.go index 7f6dce7..25889ed 100644 --- a/internal/dynamo-browse/controllers/tableread.go +++ b/internal/dynamo-browse/controllers/tableread.go @@ -277,6 +277,10 @@ func (c *TableReadController) handleResultSetFromJobResult(filter string, pushba var partialResultsErr models.PartialResultsError if errors.As(err, &partialResultsErr) { + if newResultSet == nil { + return events.StatusMsg("Operation cancelled") + } + return events.Confirm(applyToN("View the ", len(newResultSet.Items()), "item", "items", " returned so far? "), func(yes bool) tea.Msg { if yes { return c.setResultSetAndFilter(newResultSet, filter, pushbackStack, op) diff --git a/internal/dynamo-browse/providers/dynamo/provider.go b/internal/dynamo-browse/providers/dynamo/provider.go index 2488d1f..ce71c90 100644 --- a/internal/dynamo-browse/providers/dynamo/provider.go +++ b/internal/dynamo-browse/providers/dynamo/provider.go @@ -115,7 +115,9 @@ func (p *Provider) ScanItems(ctx context.Context, tableName string, filterExpr * input.ExpressionAttributeValues = filterExpr.Values() } - paginator := dynamodb.NewScanPaginator(p.client, input) + paginator := dynamodb.NewScanPaginator(p.client, input, func(opt *dynamodb.ScanPaginatorOptions) { + opt.Limit = 100 + }) items := make([]models.Item, 0) @@ -136,11 +138,11 @@ outer: if len(items) >= maxItems { break outer } + } - if time.Now().After(nextUpdate) { - jobs.PostUpdate(ctx, fmt.Sprintf("found %d items", len(items))) - nextUpdate = time.Now().Add(1 * time.Second) - } + if time.Now().After(nextUpdate) { + jobs.PostUpdate(ctx, fmt.Sprintf("found %d items", len(items))) + nextUpdate = time.Now().Add(1 * time.Second) } } @@ -159,7 +161,9 @@ func (p *Provider) QueryItems(ctx context.Context, tableName string, filterExpr input.ExpressionAttributeValues = filterExpr.Values() } - paginator := dynamodb.NewQueryPaginator(p.client, input) + paginator := dynamodb.NewQueryPaginator(p.client, input, func(opt *dynamodb.QueryPaginatorOptions) { + opt.Limit = 100 + }) items := make([]models.Item, 0) @@ -180,11 +184,11 @@ outer: if len(items) >= maxItems { break outer } + } - if time.Now().After(nextUpdate) { - jobs.PostUpdate(ctx, fmt.Sprintf("found %d items", len(items))) - nextUpdate = time.Now().Add(1 * time.Second) - } + if time.Now().After(nextUpdate) { + jobs.PostUpdate(ctx, fmt.Sprintf("found %d items", len(items))) + nextUpdate = time.Now().Add(1 * time.Second) } }