From 307f5824fa0064280ec8697e682fc3a7d523743d Mon Sep 17 00:00:00 2001 From: Noah Holm <32292420+noppaz@users.noreply.github.com> Date: Sun, 29 Mar 2026 20:14:54 +0200 Subject: [PATCH] refactor: open files in command function consistently --- internal/commands/commands.go | 33 +++++++++++++++++++++----- internal/parse/rowgroup_values.go | 8 +------ internal/parse/rowgroup_values_test.go | 10 +++++++- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/internal/commands/commands.go b/internal/commands/commands.go index 739554a..c775a70 100644 --- a/internal/commands/commands.go +++ b/internal/commands/commands.go @@ -10,9 +10,9 @@ import ( ) func MetaCommand(filename string) error { - reader, err := file.OpenParquetFile(filename, true) + reader, err := openParquetFile(filename) if err != nil { - return fmt.Errorf("error opening parquet file: %w", err) + return err } defer reader.Close() @@ -25,9 +25,9 @@ func MetaCommand(filename string) error { } func RowGroupsCommand(filename string, perPage int) error { - reader, err := file.OpenParquetFile(filename, true) + reader, err := openParquetFile(filename) if err != nil { - return fmt.Errorf("error opening parquet file: %w", err) + return err } defer reader.Close() @@ -45,7 +45,13 @@ func RowGroupsCommand(filename string, perPage int) error { } func HeadCommand(filename string, amount int) error { - headers, rows, err := parse.ReadRows(filename, amount) + reader, err := openParquetFile(filename) + if err != nil { + return err + } + defer reader.Close() + + headers, rows, err := parse.ReadRows(reader, amount) if err != nil { return err } @@ -57,7 +63,13 @@ func HeadCommand(filename string, amount int) error { } func LessCommand(filename string, amount int) error { - headers, rows, err := parse.ReadRows(filename, amount) + reader, err := openParquetFile(filename) + if err != nil { + return err + } + defer reader.Close() + + headers, rows, err := parse.ReadRows(reader, amount) if err != nil { return err } @@ -68,3 +80,12 @@ func LessCommand(filename string, amount int) error { return visualize.ViewportCreator(header, content) } + +func openParquetFile(filename string) (*file.Reader, error) { + reader, err := file.OpenParquetFile(filename, true) + if err != nil { + return nil, fmt.Errorf("error opening parquet file: %w", err) + } + + return reader, nil +} diff --git a/internal/parse/rowgroup_values.go b/internal/parse/rowgroup_values.go index afda5b3..2e5d6a7 100644 --- a/internal/parse/rowgroup_values.go +++ b/internal/parse/rowgroup_values.go @@ -9,13 +9,7 @@ import ( "golang.org/x/sync/errgroup" ) -func ReadRows(filename string, amount int) ([]string, [][]string, error) { - reader, err := file.OpenParquetFile(filename, true) - if err != nil { - return nil, nil, fmt.Errorf("error opening parquet file: %w", err) - } - defer reader.Close() - +func ReadRows(reader *file.Reader, amount int) ([]string, [][]string, error) { const rowGroupIndex = 0 firstRowGroup := reader.RowGroup(rowGroupIndex) diff --git a/internal/parse/rowgroup_values_test.go b/internal/parse/rowgroup_values_test.go index ad144fb..aae9969 100644 --- a/internal/parse/rowgroup_values_test.go +++ b/internal/parse/rowgroup_values_test.go @@ -3,6 +3,8 @@ package parse import ( "slices" "testing" + + "github.com/apache/arrow-go/v18/parquet/file" ) func Test_ReadRows(t *testing.T) { @@ -40,7 +42,13 @@ func Test_ReadRows(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { - headers, rows, err := ReadRows(tt.input.filename, tt.input.amount) + reader, err := file.OpenParquetFile(tt.input.filename, true) + if err != nil { + t.Fatalf("OpenParquetFile returned err: %v", err) + } + defer reader.Close() + + headers, rows, err := ReadRows(reader, tt.input.amount) if err != nil { t.Errorf("ReadRows returned err: %v", err) }