@@ -67,25 +67,32 @@ func ReadSQLFiles(paths []string) ([]string, error) {
67
67
if err != nil {
68
68
return nil , fmt .Errorf ("path %s does not exist" , path )
69
69
}
70
-
71
70
if f .IsDir () {
72
71
listing , err := ioutil .ReadDir (path )
73
72
if err != nil {
74
73
return nil , err
75
74
}
76
75
for _ , f := range listing {
77
- if migrations .IsDown (f .Name ()) {
78
- continue
79
- }
80
76
files = append (files , filepath .Join (path , f .Name ()))
81
77
}
82
78
} else {
83
- if ! migrations .IsDown (path ) {
84
- files = append (files , path )
85
- }
79
+ files = append (files , path )
80
+ }
81
+ }
82
+ var sqlFiles []string
83
+ for _ , file := range files {
84
+ if ! strings .HasSuffix (file , ".sql" ) {
85
+ continue
86
+ }
87
+ if strings .HasPrefix (filepath .Base (file ), "." ) {
88
+ continue
89
+ }
90
+ if migrations .IsDown (filepath .Base (file )) {
91
+ continue
86
92
}
93
+ sqlFiles = append (sqlFiles , file )
87
94
}
88
- return files , nil
95
+ return sqlFiles , nil
89
96
}
90
97
91
98
func ParseCatalog (schemas []string ) (core.Catalog , error ) {
@@ -193,64 +200,43 @@ type ParserOpts struct {
193
200
func ParseQueries (c core.Catalog , queriesPaths []string , opts ParserOpts ) (* Result , error ) {
194
201
merr := NewParserErr ()
195
202
var q []* Query
196
- for _ , queries := range queriesPaths {
197
- f , err := os .Stat (queries )
203
+
204
+ set := map [string ]struct {}{}
205
+ files , err := ReadSQLFiles (queriesPaths )
206
+ if err != nil {
207
+ return nil , err
208
+ }
209
+ for _ , filename := range files {
210
+ blob , err := ioutil .ReadFile (filename )
198
211
if err != nil {
199
- return nil , fmt .Errorf ("path %s does not exist" , queries )
212
+ merr .Add (filename , "" , 0 , err )
213
+ continue
200
214
}
201
-
202
- var files []string
203
- if f .IsDir () {
204
- listing , err := ioutil .ReadDir (queries )
205
- if err != nil {
206
- return nil , err
207
- }
208
- for _ , f := range listing {
209
- files = append (files , filepath .Join (queries , f .Name ()))
210
- }
211
- } else {
212
- files = append (files , queries )
215
+ source := string (blob )
216
+ tree , err := pg .Parse (source )
217
+ if err != nil {
218
+ merr .Add (filename , source , 0 , err )
219
+ continue
213
220
}
214
-
215
- set := map [string ]struct {}{}
216
- for _ , filename := range files {
217
- if ! strings .HasSuffix (filename , ".sql" ) {
218
- continue
219
- }
220
- if strings .HasPrefix (filepath .Base (filename ), "." ) {
221
- continue
222
- }
223
- blob , err := ioutil .ReadFile (filename )
224
- if err != nil {
225
- merr .Add (filename , "" , 0 , err )
221
+ for _ , stmt := range tree .Statements {
222
+ query , err := parseQuery (c , stmt , source , opts .UsePositionalParameters )
223
+ if err == errUnsupportedStatementType {
226
224
continue
227
225
}
228
- source := string (blob )
229
- tree , err := pg .Parse (source )
230
226
if err != nil {
231
- merr .Add (filename , source , 0 , err )
227
+ merr .Add (filename , source , location ( stmt ) , err )
232
228
continue
233
229
}
234
- for _ , stmt := range tree .Statements {
235
- query , err := parseQuery (c , stmt , source , opts .UsePositionalParameters )
236
- if err == errUnsupportedStatementType {
237
- continue
238
- }
239
- if err != nil {
240
- merr .Add (filename , source , location (stmt ), err )
230
+ if query .Name != "" {
231
+ if _ , exists := set [query .Name ]; exists {
232
+ merr .Add (filename , source , location (stmt ), fmt .Errorf ("duplicate query name: %s" , query .Name ))
241
233
continue
242
234
}
243
- if query .Name != "" {
244
- if _ , exists := set [query .Name ]; exists {
245
- merr .Add (filename , source , location (stmt ), fmt .Errorf ("duplicate query name: %s" , query .Name ))
246
- continue
247
- }
248
- set [query .Name ] = struct {}{}
249
- }
250
- query .Filename = filepath .Base (filename )
251
- if query != nil {
252
- q = append (q , query )
253
- }
235
+ set [query .Name ] = struct {}{}
236
+ }
237
+ query .Filename = filepath .Base (filename )
238
+ if query != nil {
239
+ q = append (q , query )
254
240
}
255
241
}
256
242
}
0 commit comments