@@ -54,8 +54,10 @@ import (
5454)
5555
5656const (
57- queryFilePath = "queries.sql"
58- emailMsgr = "email"
57+ // Path to the SQL queries directory in the embedded FS.
58+ queryFilePath = "/queries"
59+
60+ emailMsgr = "email"
5961)
6062
6163// UrlConfig contains various URL constants used in the app.
@@ -199,7 +201,7 @@ func initFS(appDir, frontendDir, staticDir, i18nDir string) stuffbin.FileSystem
199201 // These paths are joined with appDir.
200202 appFiles = []string {
201203 "./config.toml.sample:config.toml.sample" ,
202- "./queries.sql :queries.sql " ,
204+ "./queries:queries" ,
203205 "./schema.sql:schema.sql" ,
204206 "./permissions.json:permissions.json" ,
205207 }
@@ -333,19 +335,35 @@ func initDB() *sqlx.DB {
333335 return db .Unsafe ()
334336}
335337
336- // readQueries reads named SQL queries from the SQL queries file into a query map.
337- func readQueries (sqlFile string , fs stuffbin.FileSystem ) goyesql.Queries {
338- // Load SQL queries.
339- qB , err := fs .Read (sqlFile )
338+ func readQueries (dir string , fs stuffbin.FileSystem ) goyesql.Queries {
339+ out := goyesql.Queries {}
340+
341+ // Glob all the .sql files in the queries directory.
342+ qPath := path .Join (dir , "/*.sql" )
343+ files , err := fs .Glob (qPath )
340344 if err != nil {
341- lo .Fatalf ("error reading SQL file %s: %v" , sqlFile , err )
345+ lo .Fatalf ("error reading *.sql query files from %s: %v" , qPath , err )
342346 }
343- qMap , err := goyesql .ParseBytes (qB )
344- if err != nil {
345- lo .Fatalf ("error parsing SQL queries: %v" , err )
347+
348+ // Read and merge queries from all files into one map.
349+ for _ , file := range files {
350+ // Read the SQL file.
351+ b , err := fs .Read (file )
352+ if err != nil {
353+ lo .Fatalf ("error reading SQL file %s: %v" , file , err )
354+ }
355+
356+ // Parse queries in it into a map.
357+ mp , err := goyesql .ParseBytes (b )
358+ if err != nil {
359+ lo .Fatalf ("error parsing SQL queries: %v" , err )
360+ }
361+
362+ // Merge into the main query map.
363+ maps .Copy (out , mp )
346364 }
347365
348- return qMap
366+ return out
349367}
350368
351369// prepareQueries queries prepares a query map and returns a *Queries
0 commit comments