8
8
"log"
9
9
"os"
10
10
"strconv"
11
+ "strings"
11
12
12
13
"github.com/spf13/cobra"
13
14
"github.com/spf13/viper"
@@ -32,23 +33,36 @@ var dbMigrateCmd = &cobra.Command{
32
33
Short : "commands to run schema migrations on horizon's postgres db" ,
33
34
}
34
35
35
- func requireAndSetFlag (name string ) error {
36
+ func requireAndSetFlags (names ... string ) error {
37
+ set := map [string ]bool {}
38
+ for _ , name := range names {
39
+ set [name ] = true
40
+ }
36
41
for _ , flag := range flags {
37
- if flag .Name == name {
42
+ if set [ flag .Name ] {
38
43
flag .Require ()
39
- flag .SetValue ()
40
- return nil
44
+ if err := flag .SetValue (); err != nil {
45
+ return err
46
+ }
47
+ delete (set , flag .Name )
41
48
}
42
49
}
43
- return fmt .Errorf ("could not find %s flag" , name )
50
+ if len (set ) == 0 {
51
+ return nil
52
+ }
53
+ var missing []string
54
+ for name := range set {
55
+ missing = append (missing , name )
56
+ }
57
+ return fmt .Errorf ("could not find %s flags" , strings .Join (missing , "," ))
44
58
}
45
59
46
60
var dbInitCmd = & cobra.Command {
47
61
Use : "init" ,
48
62
Short : "install schema" ,
49
63
Long : "init initializes the postgres database used by horizon." ,
50
64
RunE : func (cmd * cobra.Command , args []string ) error {
51
- if err := requireAndSetFlag (horizon .DatabaseURLFlagName ); err != nil {
65
+ if err := requireAndSetFlags (horizon .DatabaseURLFlagName , horizon . IngestFlagName ); err != nil {
52
66
return err
53
67
}
54
68
@@ -72,6 +86,11 @@ var dbInitCmd = &cobra.Command{
72
86
}
73
87
74
88
func migrate (dir schema.MigrateDir , count int ) error {
89
+ if ! config .Ingest {
90
+ log .Println ("Skipping migrations because ingest flag is not enabled" )
91
+ return nil
92
+ }
93
+
75
94
dbConn , err := db .Open ("postgres" , config .DatabaseURL )
76
95
if err != nil {
77
96
return err
@@ -95,7 +114,7 @@ var dbMigrateDownCmd = &cobra.Command{
95
114
Short : "run downwards db schema migrations" ,
96
115
Long : "performs a downards schema migration command" ,
97
116
RunE : func (cmd * cobra.Command , args []string ) error {
98
- if err := requireAndSetFlag (horizon .DatabaseURLFlagName ); err != nil {
117
+ if err := requireAndSetFlags (horizon .DatabaseURLFlagName , horizon . IngestFlagName ); err != nil {
99
118
return err
100
119
}
101
120
@@ -119,7 +138,7 @@ var dbMigrateRedoCmd = &cobra.Command{
119
138
Short : "redo db schema migrations" ,
120
139
Long : "performs a redo schema migration command" ,
121
140
RunE : func (cmd * cobra.Command , args []string ) error {
122
- if err := requireAndSetFlag (horizon .DatabaseURLFlagName ); err != nil {
141
+ if err := requireAndSetFlags (horizon .DatabaseURLFlagName , horizon . IngestFlagName ); err != nil {
123
142
return err
124
143
}
125
144
@@ -143,7 +162,7 @@ var dbMigrateStatusCmd = &cobra.Command{
143
162
Short : "print current database migration status" ,
144
163
Long : "print current database migration status" ,
145
164
RunE : func (cmd * cobra.Command , args []string ) error {
146
- if err := requireAndSetFlag (horizon .DatabaseURLFlagName ); err != nil {
165
+ if err := requireAndSetFlags (horizon .DatabaseURLFlagName ); err != nil {
147
166
return err
148
167
}
149
168
@@ -173,7 +192,7 @@ var dbMigrateUpCmd = &cobra.Command{
173
192
Short : "run upwards db schema migrations" ,
174
193
Long : "performs an upwards schema migration command" ,
175
194
RunE : func (cmd * cobra.Command , args []string ) error {
176
- if err := requireAndSetFlag (horizon .DatabaseURLFlagName ); err != nil {
195
+ if err := requireAndSetFlags (horizon .DatabaseURLFlagName , horizon . IngestFlagName ); err != nil {
177
196
return err
178
197
}
179
198
@@ -453,7 +472,7 @@ var dbDetectGapsCmd = &cobra.Command{
453
472
Short : "detects ingestion gaps in Horizon's database" ,
454
473
Long : "detects ingestion gaps in Horizon's database and prints a list of reingest commands needed to fill the gaps" ,
455
474
RunE : func (cmd * cobra.Command , args []string ) error {
456
- if err := requireAndSetFlag (horizon .DatabaseURLFlagName ); err != nil {
475
+ if err := requireAndSetFlags (horizon .DatabaseURLFlagName ); err != nil {
457
476
return err
458
477
}
459
478
0 commit comments