diff --git a/cli/internal/cmd/load.plaid-data.go b/cli/internal/cmd/extract.go similarity index 91% rename from cli/internal/cmd/load.plaid-data.go rename to cli/internal/cmd/extract.go index 0e32529..093ca51 100644 --- a/cli/internal/cmd/load.plaid-data.go +++ b/cli/internal/cmd/extract.go @@ -12,10 +12,10 @@ import ( "github.com/spf13/cobra" ) -func LoadPlaidDataCmd(ctx context.Context) *cobra.Command { +func ExtractCmd(ctx context.Context) *cobra.Command { command := cobra.Command{ - Use: "plaid-data", - Short: "load data from plaid", + Use: "extract", + Short: "fetch data from the Plaid API and save it", RunE: func(cmd *cobra.Command, args []string) error { isSandBox, err := cmd.Flags().GetBool("sandbox") if err != nil { diff --git a/cli/internal/cmd/load.go b/cli/internal/cmd/load.go index 1357619..c231f99 100644 --- a/cli/internal/cmd/load.go +++ b/cli/internal/cmd/load.go @@ -2,19 +2,59 @@ package cmd import ( "context" + "database/sql" + "os" + "path/filepath" + "time" + _ "github.com/mattn/go-sqlite3" + "github.com/politicker/budgeted/internal/csv" + "github.com/politicker/budgeted/internal/db" "github.com/spf13/cobra" ) func LoadCmd(ctx context.Context) *cobra.Command { - cmd := &cobra.Command{ + command := cobra.Command{ Use: "load", - Short: "load data", - } + Short: "load CSV data into SQLite database", + RunE: func(cmd *cobra.Command, args []string) error { + + driver, err := sql.Open("sqlite3", filepath.Join(os.Getenv("HOME"), ".config", "budgeted", "db.sqlite")) + if err != nil { + return err + } + + queries := db.New(driver) + ctx := context.Background() + + err = queries.ImportLogCreate(ctx, time.Now()) + if err != nil { + return err + } + + importLogId, err := queries.ImportLogGetLastInsertID(ctx) + if err != nil { + return err + } - cmd.AddCommand(LoadCsvCmd(ctx)) - cmd.AddCommand(LoadPlaidDataCmd(ctx)) - cmd.AddCommand(LoadSqliteCmd()) + err = csv.LoadTransactions(ctx, queries, importLogId) + if err != nil { + return err + } + + err = csv.LoadAccounts(ctx, queries, importLogId) + if err != nil { + return err + } + + err = queries.ImportLogComplete(ctx, importLogId) + if err != nil { + return err + } + + return nil + }, + } - return cmd + return &command } diff --git a/cli/internal/cmd/load.sqlite.go b/cli/internal/cmd/load.sqlite.go deleted file mode 100644 index ee5f16d..0000000 --- a/cli/internal/cmd/load.sqlite.go +++ /dev/null @@ -1,60 +0,0 @@ -package cmd - -import ( - "context" - "database/sql" - "os" - "path/filepath" - "time" - - _ "github.com/mattn/go-sqlite3" - "github.com/politicker/budgeted/internal/csv" - "github.com/politicker/budgeted/internal/db" - "github.com/spf13/cobra" -) - -func LoadSqliteCmd() *cobra.Command { - command := cobra.Command{ - Use: "sqlite", - Short: "load data from sqlite", - RunE: func(cmd *cobra.Command, args []string) error { - - driver, err := sql.Open("sqlite3", filepath.Join(os.Getenv("HOME"), ".config", "budgeted", "db.sqlite")) - if err != nil { - return err - } - - queries := db.New(driver) - ctx := context.Background() - - err = queries.ImportLogCreate(ctx, time.Now()) - if err != nil { - return err - } - - importLogId, err := queries.ImportLogGetLastInsertID(ctx) - if err != nil { - return err - } - - err = csv.LoadTransactions(ctx, queries, importLogId) - if err != nil { - return err - } - - err = csv.LoadAccounts(ctx, queries, importLogId) - if err != nil { - return err - } - - err = queries.ImportLogComplete(ctx, importLogId) - if err != nil { - return err - } - - return nil - }, - } - - return &command -} diff --git a/cli/internal/cmd/root.go b/cli/internal/cmd/root.go index 3db8d62..cca1b0d 100644 --- a/cli/internal/cmd/root.go +++ b/cli/internal/cmd/root.go @@ -58,6 +58,8 @@ func Execute(ctx context.Context) error { rootCmd.AddCommand(APICmd(ctx)) rootCmd.AddCommand(SchedulerCmd(ctx)) rootCmd.AddCommand(WorkerCmd(ctx)) + rootCmd.AddCommand(ExtractCmd(ctx)) + rootCmd.AddCommand(TransformCmd(ctx)) rootCmd.AddCommand(LoadCmd(ctx)) // I'm not sure what this is for. diff --git a/cli/internal/cmd/load.csv.go b/cli/internal/cmd/transform.go similarity index 80% rename from cli/internal/cmd/load.csv.go rename to cli/internal/cmd/transform.go index 38d6dba..68f4a48 100644 --- a/cli/internal/cmd/load.csv.go +++ b/cli/internal/cmd/transform.go @@ -8,10 +8,10 @@ import ( "github.com/spf13/cobra" ) -func LoadCsvCmd(ctx context.Context) *cobra.Command { +func TransformCmd(ctx context.Context) *cobra.Command { return &cobra.Command{ - Use: "csv", - Short: "load data into csv", + Use: "transform", + Short: "transform data from json to csv", RunE: func(cmd *cobra.Command, args []string) error { jsonStorage, csvStorage, err := cmdutil.Dirs() if err != nil {