From a0f1bdfea7ff3fd6fd7f3aae5651b46ea4a82671 Mon Sep 17 00:00:00 2001 From: Felicitas Pojtinger Date: Mon, 6 Dec 2021 22:48:23 +0100 Subject: [PATCH] refactor: Decompose `list` func --- cmd/stbak/cmd/list.go | 37 +++++++---------------------- pkg/inventory/config.go | 5 ++++ pkg/inventory/find.go | 11 +++++++++ pkg/inventory/inventory.go | 19 --------------- pkg/inventory/list.go | 48 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 72 insertions(+), 48 deletions(-) create mode 100644 pkg/inventory/config.go create mode 100644 pkg/inventory/find.go delete mode 100644 pkg/inventory/inventory.go create mode 100644 pkg/inventory/list.go diff --git a/cmd/stbak/cmd/list.go b/cmd/stbak/cmd/list.go index 0302847..5e93a80 100644 --- a/cmd/stbak/cmd/list.go +++ b/cmd/stbak/cmd/list.go @@ -1,11 +1,7 @@ package cmd import ( - "context" - - "github.com/pojntfx/stfs/internal/converters" - "github.com/pojntfx/stfs/internal/formatting" - "github.com/pojntfx/stfs/internal/persisters" + "github.com/pojntfx/stfs/pkg/inventory" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/volatiletech/sqlboiler/v4/boil" @@ -24,33 +20,16 @@ var listCmd = &cobra.Command{ boil.DebugMode = true } - metadataPersister := persisters.NewMetadataPersister(viper.GetString(metadataFlag)) - if err := metadataPersister.Open(); err != nil { + if _, err := inventory.List( + inventory.MetadataConfig{ + Metadata: viper.GetString(metadataFlag), + }, + + viper.GetString(nameFlag), + ); err != nil { return err } - headers, err := metadataPersister.GetHeaderDirectChildren(context.Background(), viper.GetString(nameFlag)) - if err != nil { - return err - } - - for i, dbhdr := range headers { - if i == 0 { - if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil { - return err - } - } - - hdr, err := converters.DBHeaderToTarHeader(dbhdr) - if err != nil { - return err - } - - if err := formatting.PrintCSV(formatting.GetTARHeaderAsCSV(dbhdr.Record, dbhdr.Block, hdr)); err != nil { - return err - } - } - return nil }, } diff --git a/pkg/inventory/config.go b/pkg/inventory/config.go new file mode 100644 index 0000000..eead210 --- /dev/null +++ b/pkg/inventory/config.go @@ -0,0 +1,5 @@ +package inventory + +type MetadataConfig struct { + Metadata string +} diff --git a/pkg/inventory/find.go b/pkg/inventory/find.go new file mode 100644 index 0000000..8a02afb --- /dev/null +++ b/pkg/inventory/find.go @@ -0,0 +1,11 @@ +package inventory + +import "archive/tar" + +func Find( + state MetadataConfig, + + expression string, +) ([]*tar.Header, error) { + return nil, nil +} diff --git a/pkg/inventory/inventory.go b/pkg/inventory/inventory.go deleted file mode 100644 index e2677fe..0000000 --- a/pkg/inventory/inventory.go +++ /dev/null @@ -1,19 +0,0 @@ -package inventory - -import "archive/tar" - -type MetadataConfig struct { - Metadata string -} - -func Find( - state MetadataConfig, - - expression string, -) ([]*tar.Header, error) - -func List( - state MetadataConfig, - - name string, -) ([]*tar.Header, error) diff --git a/pkg/inventory/list.go b/pkg/inventory/list.go new file mode 100644 index 0000000..3b624f2 --- /dev/null +++ b/pkg/inventory/list.go @@ -0,0 +1,48 @@ +package inventory + +import ( + "archive/tar" + "context" + + "github.com/pojntfx/stfs/internal/converters" + "github.com/pojntfx/stfs/internal/formatting" + "github.com/pojntfx/stfs/internal/persisters" +) + +func List( + state MetadataConfig, + + name string, +) ([]*tar.Header, error) { + metadataPersister := persisters.NewMetadataPersister(state.Metadata) + if err := metadataPersister.Open(); err != nil { + return []*tar.Header{}, err + } + + dbHdrs, err := metadataPersister.GetHeaderDirectChildren(context.Background(), name) + if err != nil { + return []*tar.Header{}, err + } + + headers := []*tar.Header{} + for i, dbhdr := range dbHdrs { + if i == 0 { + if err := formatting.PrintCSV(formatting.TARHeaderCSV); err != nil { + return []*tar.Header{}, err + } + } + + hdr, err := converters.DBHeaderToTarHeader(dbhdr) + if err != nil { + return []*tar.Header{}, err + } + + if err := formatting.PrintCSV(formatting.GetTARHeaderAsCSV(dbhdr.Record, dbhdr.Block, hdr)); err != nil { + return []*tar.Header{}, err + } + + headers = append(headers, hdr) + } + + return headers, nil +}