@@ -32,6 +32,7 @@ import (
3232var storeSrc string
3333
3434func main () {
35+ fmt .Println ("sqlc-wrapper: generating store.go files for sqlc driver packages..." )
3536 if err := run (); err != nil {
3637 log .Fatal (err )
3738 }
@@ -88,13 +89,11 @@ func run() error {
8889 if err != nil {
8990 return err
9091 }
91- models , _ := collectTypes (driverTypePkg )
9292
9393 src , err := render (tmplData {
94- PkgName : driverTypePkg .Name (),
95- RepoPkg : repoPkgPath ,
96- ModelTypes : models ,
97- Methods : renderMethods (methods ),
94+ PkgName : driverTypePkg .Name (),
95+ RepoPkg : repoPkgPath ,
96+ Methods : renderMethods (methods ),
9897 })
9998 if err != nil {
10099 return fmt .Errorf ("render: %w" , err )
@@ -260,19 +259,6 @@ func compareStructs(name string, driver, repo *types.Struct) error {
260259 return nil
261260}
262261
263- // collectTypes returns model and params struct names from the driver package.
264- func collectTypes (pkg * types.Package ) (models []string , params []string ) {
265- names , _ := scopeStructs (pkg )
266- for _ , name := range names {
267- if strings .HasSuffix (name , "Params" ) {
268- params = append (params , name )
269- } else {
270- models = append (models , name )
271- }
272- }
273- return
274- }
275-
276262type methodInfo struct {
277263 Name string
278264 Params []paramInfo
@@ -369,14 +355,6 @@ func repoName(t types.Type, driverPath string) string {
369355 return ""
370356}
371357
372- // converterFn maps a type name to its converter function name: "Session" → "sessionToRepo".
373- func converterFn (s string ) string {
374- if s == "" {
375- return ""
376- }
377- return strings .ToLower (s [:1 ]) + s [1 :] + "ToRepo"
378- }
379-
380358// renderedMethod holds pre-built signature and body strings passed to the template.
381359type renderedMethod struct {
382360 Signature string
@@ -441,35 +419,11 @@ func callArgs(m methodInfo) string {
441419 return "ctx, " + strings .Join (args , ", " )
442420}
443421
444- // bodyTemplates holds the per-shape method body templates, parsed once at init.
445- var bodyTemplates = template .Must (
446- template .New ("bodies" ).Parse (`
447- {{define "void"}} return mapErr({{.Call}})
448- {{end}}
449-
450- {{define "scalar"}} r, err := {{.Call}}
451- if err != nil {
452- return {{.RepoType}}{}, mapErr(err)
453- }
454- return {{.Converter}}(r), nil
455- {{end}}
456-
457- {{define "slice"}} rows, err := {{.Call}}
458- if err != nil {
459- return nil, mapErr(err)
460- }
461- out := make([]{{.RepoType}}, len(rows))
462- for i, row := range rows {
463- out[i] = {{.Converter}}(row)
464- }
465- return out, nil
466- {{end}}` ),
467- )
422+ var bodyTmpl = template .Must (template .New ("store" ).Parse (storeSrc ))
468423
469424type bodyData struct {
470- Call string
471- RepoType string
472- Converter string
425+ Call string
426+ RepoType string
473427}
474428
475429func buildBody (m methodInfo ) string {
@@ -486,36 +440,28 @@ func buildBody(m methodInfo) string {
486440 data = bodyData {Call : call }
487441 case m .Results [0 ].IsSlice :
488442 name = "slice"
489- data = bodyData {Call : call , RepoType : m .Results [0 ].RepoType , Converter : converterFn ( m . Results [ 0 ]. TypeStr ) }
443+ data = bodyData {Call : call , RepoType : m .Results [0 ].RepoType }
490444 default :
491445 name = "scalar"
492- data = bodyData {Call : call , RepoType : m .Results [0 ].RepoType , Converter : converterFn ( m . Results [ 0 ]. TypeStr ) }
446+ data = bodyData {Call : call , RepoType : m .Results [0 ].RepoType }
493447 }
494448
495449 var buf bytes.Buffer
496- if err := bodyTemplates .ExecuteTemplate (& buf , name , data ); err != nil {
450+ if err := bodyTmpl .ExecuteTemplate (& buf , name , data ); err != nil {
497451 panic (fmt .Sprintf ("buildBody %s: %v" , name , err ))
498452 }
499453 return buf .String ()
500454}
501455
502456type tmplData struct {
503- PkgName string
504- RepoPkg string
505- ModelTypes []string
506- Methods []renderedMethod
457+ PkgName string
458+ RepoPkg string
459+ Methods []renderedMethod
507460}
508461
509462func render (data tmplData ) ([]byte , error ) {
510- t , err := template .New ("store" ).Funcs (template.FuncMap {
511- "converterFn" : converterFn ,
512- }).Parse (storeSrc )
513- if err != nil {
514- return nil , fmt .Errorf ("parse template: %w" , err )
515- }
516-
517463 var buf bytes.Buffer
518- if err := t .Execute (& buf , data ); err != nil {
464+ if err := bodyTmpl .Execute (& buf , data ); err != nil {
519465 return nil , fmt .Errorf ("execute template: %w" , err )
520466 }
521467
0 commit comments