@@ -31,7 +31,7 @@ var customTypes = []FieldInitializer{
3131 },
3232}
3333
34- func Generate (schema * core.SQLSchema , contents io.Writer , pkg string , driver string ) error {
34+ func Generate (schema * core.SQLSchema , contents io.Writer , pkg string , driver string , logger string ) error {
3535 templateType := ""
3636 switch driver {
3737 case "pgx" :
@@ -50,6 +50,11 @@ func Generate(schema *core.SQLSchema, contents io.Writer, pkg string, driver str
5050 return err
5151 }
5252
53+ loggerTmpl , err := template .ParseFS (templates , fmt .Sprintf ("templates/logger_%s.tmpl" , logger ))
54+ if err != nil {
55+ return err
56+ }
57+
5358 modelTmpl , err := template .ParseFS (templates , "templates/model.tmpl" )
5459 if err != nil {
5560 return err
@@ -110,6 +115,38 @@ func Generate(schema *core.SQLSchema, contents io.Writer, pkg string, driver str
110115 placeholder = "squirrel.Question"
111116 }
112117
118+ logConfig := LoggerConfig {}
119+
120+ switch logger {
121+ case "zap" :
122+ deps ["zap" ] = "go.uber.org/zap"
123+ deps ["time" ] = "time"
124+ logConfig .HasLogger = true
125+ logConfig .HasLoggerParam = true
126+ logConfig .Type = `*zap.Logger`
127+ case "logrus" :
128+ deps ["logrus" ] = "github.com/sirupsen/logrus"
129+ deps ["time" ] = "time"
130+ logConfig .HasLogger = true
131+ logConfig .HasLoggerParam = true
132+ logConfig .Type = `*logrus.Logger`
133+ case "zerolog" :
134+ deps ["zero" ] = "github.com/rs/zerolog"
135+ deps ["time" ] = "time"
136+ logConfig .HasLogger = true
137+ logConfig .HasLoggerParam = true
138+ logConfig .Type = `zerolog.Logger`
139+ case "console" :
140+ deps ["log" ] = "log"
141+ deps ["time" ] = "time"
142+
143+ logConfig .HasLogger = true
144+ logConfig .HasLoggerParam = false
145+ logConfig .Type = ``
146+ }
147+
148+ fmt .Println (logger , logConfig )
149+
113150 if err = headerTmpl .Execute (contents , HeaderData {
114151 Package : pkg ,
115152 Url : "https://github.com/kefniark/mangosql" ,
@@ -125,25 +162,49 @@ func Generate(schema *core.SQLSchema, contents io.Writer, pkg string, driver str
125162 Tables []* PostgresTable
126163 Queries []* PostgresQuery
127164 Filters []FilterMethod
165+ Logger LoggerConfig
128166 }{
129167 Tables : postgresTables ,
130168 Queries : postgresQueries ,
131169 Filters : GetFilterMethods (postgresTables , driver ),
170+ Logger : logConfig ,
132171 }); err != nil {
133172 return err
134173 }
135174
175+ if err = loggerTmpl .Execute (contents , nil ); err != nil {
176+ return err
177+ }
178+
136179 for _ , table := range postgresTables {
137- if err = modelTmpl .Execute (contents , table ); err != nil {
180+ if err = modelTmpl .Execute (contents , struct {
181+ Table * PostgresTable
182+ Logger LoggerConfig
183+ }{
184+ Table : table ,
185+ Logger : logConfig ,
186+ }); err != nil {
138187 return err
139188 }
140189
141- if err = queriesTmpl .Execute (contents , table ); err != nil {
190+ if err = queriesTmpl .Execute (contents , struct {
191+ Table * PostgresTable
192+ Logger LoggerConfig
193+ }{
194+ Table : table ,
195+ Logger : logConfig ,
196+ }); err != nil {
142197 return err
143198 }
144199 }
145200
146- if err = customQueriesTmpl .Execute (contents , postgresQueries ); err != nil {
201+ if err = customQueriesTmpl .Execute (contents , struct {
202+ Queries []* PostgresQuery
203+ Logger LoggerConfig
204+ }{
205+ Queries : postgresQueries ,
206+ Logger : logConfig ,
207+ }); err != nil {
147208 return err
148209 }
149210
@@ -789,3 +850,9 @@ type PrimaryFieldInit struct {
789850 Init string
790851 Setter string
791852}
853+
854+ type LoggerConfig struct {
855+ HasLoggerParam bool
856+ HasLogger bool
857+ Type string
858+ }
0 commit comments