Skip to content

Commit b37a880

Browse files
committed
Fixed #29: Added import / export commands with batching
1 parent 79fead5 commit b37a880

File tree

11 files changed

+419
-24
lines changed

11 files changed

+419
-24
lines changed

cmd/records_insert.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var recordsInsertCmd = &cobra.Command{
2626
Run: func(cmd *cobra.Command, args []string) {
2727
ctx, logger, qb := qbcli.NewClient(cmd, globalCfg)
2828

29-
err := qbcli.SetFieldTypeMap(qb, recordsInsertCfg.GetString("to"))
29+
err := qbcli.CacheTableSchema(qb, recordsInsertCfg.GetString("to"))
3030
qbcli.HandleError(ctx, logger, "error setting field type map", err)
3131

3232
input := &qbclient.InsertRecordsInput{}

cmd/table_export.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package cmd
2+
3+
import (
4+
"github.com/QuickBase/quickbase-cli/qbcli"
5+
"github.com/QuickBase/quickbase-cli/qbclient"
6+
"github.com/cpliakas/cliutil"
7+
"github.com/spf13/cobra"
8+
"github.com/spf13/viper"
9+
)
10+
11+
var tableExportCfg *viper.Viper
12+
13+
var tableExportCmd = &cobra.Command{
14+
Use: "export",
15+
Short: "Export data in a table",
16+
17+
Args: func(cmd *cobra.Command, args []string) (err error) {
18+
if err = globalCfg.Validate(); err == nil {
19+
globalCfg.SetDefaultTableID(tableExportCfg)
20+
qbcli.SetOptionFromArg(tableExportCfg, args, 0, qbclient.OptionTableID)
21+
}
22+
return
23+
},
24+
25+
Run: func(cmd *cobra.Command, args []string) {
26+
ctx, logger, qb := qbcli.NewClient(cmd, globalCfg)
27+
28+
opts := &qbcli.ExportOptions{}
29+
qbcli.GetOptions(ctx, logger, opts, tableExportCfg)
30+
31+
err := qbcli.Export(qb, opts)
32+
qbcli.HandleError(ctx, logger, "error exporting records", err)
33+
},
34+
}
35+
36+
func init() {
37+
var flags *cliutil.Flagger
38+
tableExportCfg, flags = cliutil.AddCommand(tableCmd, tableExportCmd, qbclient.EnvPrefix)
39+
flags.SetOptions(&qbcli.ExportOptions{})
40+
}

cmd/table_import.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package cmd
2+
3+
import (
4+
"github.com/QuickBase/quickbase-cli/qbcli"
5+
"github.com/QuickBase/quickbase-cli/qbclient"
6+
"github.com/cpliakas/cliutil"
7+
"github.com/spf13/cobra"
8+
"github.com/spf13/viper"
9+
)
10+
11+
var tableImportCfg *viper.Viper
12+
13+
var tableImportCmd = &cobra.Command{
14+
Use: "import",
15+
Short: "Import data into a table",
16+
17+
Args: func(cmd *cobra.Command, args []string) (err error) {
18+
if err = globalCfg.Validate(); err == nil {
19+
globalCfg.SetDefaultTableID(tableImportCfg)
20+
qbcli.SetOptionFromArg(tableImportCfg, args, 0, qbclient.OptionTableID)
21+
}
22+
return
23+
},
24+
25+
Run: func(cmd *cobra.Command, args []string) {
26+
ctx, logger, qb := qbcli.NewClient(cmd, globalCfg)
27+
28+
opts := &qbcli.ImportOptions{}
29+
qbcli.GetOptions(ctx, logger, opts, tableImportCfg)
30+
31+
output, err := qbcli.Import(qb, opts)
32+
qbcli.Render(ctx, logger, cmd, globalCfg, output, err)
33+
},
34+
}
35+
36+
func init() {
37+
var flags *cliutil.Flagger
38+
tableImportCfg, flags = cliutil.AddCommand(tableCmd, tableImportCmd, qbclient.EnvPrefix)
39+
flags.SetOptions(&qbcli.ImportOptions{})
40+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.15
44

55
require (
66
github.com/araddon/dateparse v0.0.0-20201001162425-8aadafed4dc4
7-
github.com/cpliakas/cliutil v0.2.3
7+
github.com/cpliakas/cliutil v0.2.4
88
github.com/go-playground/locales v0.13.0
99
github.com/go-playground/universal-translator v0.17.0
1010
github.com/go-playground/validator/v10 v10.4.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc
3232
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
3333
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
3434
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
35-
github.com/cpliakas/cliutil v0.2.3 h1:mb91difRwnG9A9p8+pNMXCvTuzku/d3cNl2rCClaLBc=
36-
github.com/cpliakas/cliutil v0.2.3/go.mod h1:rHiqeBXCXOikDmm+tpmBGY/afxRNWGfTr9D7dx217e4=
35+
github.com/cpliakas/cliutil v0.2.4 h1:gyMtCwHA6ImmNflbjTHW4WhMGsrGoGGLodZFD9+0JKo=
36+
github.com/cpliakas/cliutil v0.2.4/go.mod h1:rHiqeBXCXOikDmm+tpmBGY/afxRNWGfTr9D7dx217e4=
3737
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
3838
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
3939
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

0 commit comments

Comments
 (0)