@@ -11,6 +11,7 @@ import (
1111 "path/filepath"
1212
1313 "github.com/kyleconroy/sqlc/internal/dinosql"
14+ "github.com/kyleconroy/sqlc/internal/mysql"
1415
1516 "github.com/davecgh/go-spew/spew"
1617 pg "github.com/lfittl/pg_query_go"
@@ -126,48 +127,57 @@ var genCmd = &cobra.Command{
126127
127128 output := map [string ]string {}
128129
129- for i , pkg := range settings .Packages {
130+ for _ , pkg := range settings .Packages {
130131 name := pkg .Name
131132
132- if pkg .Path == "" {
133- fmt .Fprintf (os .Stderr , "package[%d]: path must be set\n " , i )
134- errored = true
135- continue
136- }
133+ var result dinosql.Generateable
137134
138- if name == "" {
139- name = filepath .Base (pkg .Path )
140- }
135+ switch pkg .Engine {
141136
142- c , err := dinosql .ParseCatalog (pkg .Schema )
143- if err != nil {
144- fmt .Fprintf (os .Stderr , "# package %s\n " , name )
145- if parserErr , ok := err .(* dinosql.ParserErr ); ok {
146- for _ , fileErr := range parserErr .Errs {
147- fmt .Fprintf (os .Stderr , "%s:%d:%d: %s\n " , fileErr .Filename , fileErr .Line , fileErr .Column , fileErr .Err )
137+ case dinosql .EngineMySQL :
138+ // Experimental MySQL support
139+ q , err := mysql .GeneratePkg (name , pkg .Schema , pkg .Queries , settings )
140+ if err != nil {
141+ fmt .Fprintf (os .Stderr , "# package %s\n " , name )
142+ fmt .Fprintf (os .Stderr , "error parsing file: %s\n " , err )
143+ errored = true
144+ continue
145+ }
146+ result = q
147+
148+ case dinosql .EnginePostgreSQL :
149+ c , err := dinosql .ParseCatalog (pkg .Schema )
150+ if err != nil {
151+ fmt .Fprintf (os .Stderr , "# package %s\n " , name )
152+ if parserErr , ok := err .(* dinosql.ParserErr ); ok {
153+ for _ , fileErr := range parserErr .Errs {
154+ fmt .Fprintf (os .Stderr , "%s:%d:%d: %s\n " , fileErr .Filename , fileErr .Line , fileErr .Column , fileErr .Err )
155+ }
156+ } else {
157+ fmt .Fprintf (os .Stderr , "error parsing schema: %s\n " , err )
148158 }
149- } else {
150- fmt . Fprintf ( os . Stderr , "error parsing schema: %s \n " , err )
159+ errored = true
160+ continue
151161 }
152- errored = true
153- continue
154- }
155162
156- q , err := dinosql .ParseQueries (c , settings , pkg )
157- if err != nil {
158- fmt .Fprintf (os .Stderr , "# package %s\n " , name )
159- if parserErr , ok := err .(* dinosql.ParserErr ); ok {
160- for _ , fileErr := range parserErr .Errs {
161- fmt .Fprintf (os .Stderr , "%s:%d:%d: %s\n " , fileErr .Filename , fileErr .Line , fileErr .Column , fileErr .Err )
163+ q , err := dinosql .ParseQueries (c , pkg )
164+ if err != nil {
165+ fmt .Fprintf (os .Stderr , "# package %s\n " , name )
166+ if parserErr , ok := err .(* dinosql.ParserErr ); ok {
167+ for _ , fileErr := range parserErr .Errs {
168+ fmt .Fprintf (os .Stderr , "%s:%d:%d: %s\n " , fileErr .Filename , fileErr .Line , fileErr .Column , fileErr .Err )
169+ }
170+ } else {
171+ fmt .Fprintf (os .Stderr , "error parsing queries: %s\n " , err )
162172 }
163- } else {
164- fmt . Fprintf ( os . Stderr , "error parsing queries: %s \n " , err )
173+ errored = true
174+ continue
165175 }
166- errored = true
167- continue
176+ result = q
177+
168178 }
169179
170- files , err := dinosql .Generate (q , settings , pkg )
180+ files , err := dinosql .Generate (result , settings )
171181 if err != nil {
172182 fmt .Fprintf (os .Stderr , "# package %s\n " , name )
173183 fmt .Fprintf (os .Stderr , "error generating code: %s\n " , err )
@@ -199,13 +209,13 @@ var checkCmd = &cobra.Command{
199209 Use : "compile" ,
200210 Short : "Statically check SQL for syntax and type errors" ,
201211 RunE : func (cmd * cobra.Command , args []string ) error {
202- blob , err := ioutil . ReadFile ("sqlc.json" )
212+ file , err := os . Open ("sqlc.json" )
203213 if err != nil {
204214 return err
205215 }
206216
207- var settings dinosql.GenerateSettings
208- if err := json . Unmarshal ( blob , & settings ); err != nil {
217+ settings , err := dinosql .ParseConfig ( file )
218+ if err != nil {
209219 return err
210220 }
211221
@@ -214,7 +224,7 @@ var checkCmd = &cobra.Command{
214224 if err != nil {
215225 return err
216226 }
217- if _ , err := dinosql .ParseQueries (c , settings , pkg ); err != nil {
227+ if _ , err := dinosql .ParseQueries (c , pkg ); err != nil {
218228 return err
219229 }
220230 }
0 commit comments