6
6
"fmt"
7
7
"go/format"
8
8
"log"
9
- "path/filepath"
10
9
"regexp"
11
10
"sort"
12
11
"strings"
@@ -159,13 +158,12 @@ type GoQuery struct {
159
158
}
160
159
161
160
type Generateable interface {
162
- Structs (settings GenerateSettings ) []GoStruct
163
- PkgName () string
164
- GoQueries (settings GenerateSettings ) []GoQuery
165
- Enums (settings GenerateSettings ) []GoEnum
161
+ Structs (settings CombinedSettings ) []GoStruct
162
+ GoQueries (settings CombinedSettings ) []GoQuery
163
+ Enums (settings CombinedSettings ) []GoEnum
166
164
}
167
165
168
- func UsesType (r Generateable , typ string , settings GenerateSettings ) bool {
166
+ func UsesType (r Generateable , typ string , settings CombinedSettings ) bool {
169
167
for _ , strct := range r .Structs (settings ) {
170
168
for _ , f := range strct .Fields {
171
169
fType := strings .TrimPrefix (f .Type , "[]" )
@@ -177,7 +175,7 @@ func UsesType(r Generateable, typ string, settings GenerateSettings) bool {
177
175
return false
178
176
}
179
177
180
- func UsesArrays (r Generateable , settings GenerateSettings ) bool {
178
+ func UsesArrays (r Generateable , settings CombinedSettings ) bool {
181
179
for _ , strct := range r .Structs (settings ) {
182
180
for _ , f := range strct .Fields {
183
181
if strings .HasPrefix (f .Type , "[]" ) {
@@ -188,11 +186,11 @@ func UsesArrays(r Generateable, settings GenerateSettings) bool {
188
186
return false
189
187
}
190
188
191
- func Imports (r Generateable , settings GenerateSettings ) func (string ) [][]string {
189
+ func Imports (r Generateable , settings CombinedSettings ) func (string ) [][]string {
192
190
return func (filename string ) [][]string {
193
191
if filename == "db.go" {
194
192
imps := []string {"context" , "database/sql" }
195
- if settings .PackageMap [ r . PkgName ()] .EmitPreparedQueries {
193
+ if settings .Package .EmitPreparedQueries {
196
194
imps = append (imps , "fmt" )
197
195
}
198
196
return [][]string {imps }
@@ -210,7 +208,7 @@ func Imports(r Generateable, settings GenerateSettings) func(string) [][]string
210
208
}
211
209
}
212
210
213
- func InterfaceImports (r Generateable , settings GenerateSettings ) [][]string {
211
+ func InterfaceImports (r Generateable , settings CombinedSettings ) [][]string {
214
212
gq := r .GoQueries (settings )
215
213
uses := func (name string ) bool {
216
214
for _ , q := range gq {
@@ -246,7 +244,7 @@ func InterfaceImports(r Generateable, settings GenerateSettings) [][]string {
246
244
247
245
pkg := make (map [string ]struct {})
248
246
overrideTypes := map [string ]string {}
249
- for _ , o := range append ( settings .Overrides , settings . PackageMap [ r . PkgName ()]. Overrides ... ) {
247
+ for _ , o := range settings .Overrides {
250
248
if o .goBasicType {
251
249
continue
252
250
}
@@ -284,7 +282,7 @@ func InterfaceImports(r Generateable, settings GenerateSettings) [][]string {
284
282
return [][]string {stds , pkgs }
285
283
}
286
284
287
- func ModelImports (r Generateable , settings GenerateSettings ) [][]string {
285
+ func ModelImports (r Generateable , settings CombinedSettings ) [][]string {
288
286
std := make (map [string ]struct {})
289
287
if UsesType (r , "sql.Null" , settings ) {
290
288
std ["database/sql" ] = struct {}{}
@@ -302,7 +300,7 @@ func ModelImports(r Generateable, settings GenerateSettings) [][]string {
302
300
// Custom imports
303
301
pkg := make (map [string ]struct {})
304
302
overrideTypes := map [string ]string {}
305
- for _ , o := range append ( settings .Overrides , settings . PackageMap [ r . PkgName ()]. Overrides ... ) {
303
+ for _ , o := range settings .Overrides {
306
304
if o .goBasicType {
307
305
continue
308
306
}
@@ -340,7 +338,7 @@ func ModelImports(r Generateable, settings GenerateSettings) [][]string {
340
338
return [][]string {stds , pkgs }
341
339
}
342
340
343
- func QueryImports (r Generateable , settings GenerateSettings , filename string ) [][]string {
341
+ func QueryImports (r Generateable , settings CombinedSettings , filename string ) [][]string {
344
342
// for _, strct := range r.Structs() {
345
343
// for _, f := range strct.Fields {
346
344
// if strings.HasPrefix(f.Type, "[]") {
@@ -437,7 +435,7 @@ func QueryImports(r Generateable, settings GenerateSettings, filename string) []
437
435
438
436
pkg := make (map [string ]struct {})
439
437
overrideTypes := map [string ]string {}
440
- for _ , o := range append ( settings .Overrides , settings . PackageMap [ r . PkgName ()]. Overrides ... ) {
438
+ for _ , o := range settings .Overrides {
441
439
if o .goBasicType {
442
440
continue
443
441
}
@@ -490,7 +488,7 @@ func enumValueName(value string) string {
490
488
return name
491
489
}
492
490
493
- func (r Result ) Enums (settings GenerateSettings ) []GoEnum {
491
+ func (r Result ) Enums (settings CombinedSettings ) []GoEnum {
494
492
var enums []GoEnum
495
493
for name , schema := range r .Catalog .Schemas {
496
494
if name == "pg_catalog" {
@@ -523,8 +521,8 @@ func (r Result) Enums(settings GenerateSettings) []GoEnum {
523
521
return enums
524
522
}
525
523
526
- func StructName (name string , settings GenerateSettings ) string {
527
- if rename := settings .Rename [name ]; rename != "" {
524
+ func StructName (name string , settings CombinedSettings ) string {
525
+ if rename := settings .Global . Rename [name ]; rename != "" {
528
526
return rename
529
527
}
530
528
out := ""
@@ -538,7 +536,7 @@ func StructName(name string, settings GenerateSettings) string {
538
536
return out
539
537
}
540
538
541
- func (r Result ) Structs (settings GenerateSettings ) []GoStruct {
539
+ func (r Result ) Structs (settings CombinedSettings ) []GoStruct {
542
540
var structs []GoStruct
543
541
for name , schema := range r .Catalog .Schemas {
544
542
if name == "pg_catalog" {
@@ -573,9 +571,9 @@ func (r Result) Structs(settings GenerateSettings) []GoStruct {
573
571
return structs
574
572
}
575
573
576
- func (r Result ) goType (col core.Column , settings GenerateSettings ) string {
574
+ func (r Result ) goType (col core.Column , settings CombinedSettings ) string {
577
575
// package overrides have a higher precedence
578
- for _ , oride := range append ( settings .Overrides , settings . PackageMap [ r . PkgName ()]. Overrides ... ) {
576
+ for _ , oride := range settings .Overrides {
579
577
if oride .Column != "" && oride .columnName == col .Name && oride .table == col .Table {
580
578
return oride .goTypeName
581
579
}
@@ -587,12 +585,12 @@ func (r Result) goType(col core.Column, settings GenerateSettings) string {
587
585
return typ
588
586
}
589
587
590
- func (r Result ) goInnerType (col core.Column , settings GenerateSettings ) string {
588
+ func (r Result ) goInnerType (col core.Column , settings CombinedSettings ) string {
591
589
columnType := col .DataType
592
590
notNull := col .NotNull || col .IsArray
593
591
594
592
// package overrides have a higher precedence
595
- for _ , oride := range append ( settings .Overrides , settings . PackageMap [ r . PkgName ()]. Overrides ... ) {
593
+ for _ , oride := range settings .Overrides {
596
594
if oride .PostgresType != "" && oride .PostgresType == columnType && oride .Null != notNull {
597
595
return oride .goTypeName
598
596
}
@@ -728,7 +726,7 @@ func (r Result) goInnerType(col core.Column, settings GenerateSettings) string {
728
726
// JSON tags: count, count_2, count_2
729
727
//
730
728
// This is unlikely to happen, so don't fix it yet
731
- func (r Result ) columnsToStruct (name string , columns []core.Column , settings GenerateSettings ) * GoStruct {
729
+ func (r Result ) columnsToStruct (name string , columns []core.Column , settings CombinedSettings ) * GoStruct {
732
730
gs := GoStruct {
733
731
Name : name ,
734
732
}
@@ -788,7 +786,7 @@ func compareFQN(a *core.FQN, b *core.FQN) bool {
788
786
return a .Catalog == b .Catalog && a .Schema == b .Schema && a .Rel == b .Rel
789
787
}
790
788
791
- func (r Result ) GoQueries (settings GenerateSettings ) []GoQuery {
789
+ func (r Result ) GoQueries (settings CombinedSettings ) []GoQuery {
792
790
structs := r .Structs (settings )
793
791
794
792
qs := make ([]GoQuery , 0 , len (r .Queries ))
@@ -1185,30 +1183,25 @@ func LowerTitle(s string) string {
1185
1183
return string (a )
1186
1184
}
1187
1185
1188
- func Generate (r Generateable , settings GenerateSettings ) (map [string ]string , error ) {
1186
+ func Generate (r Generateable , settings CombinedSettings ) (map [string ]string , error ) {
1189
1187
funcMap := template.FuncMap {
1190
1188
"lowerTitle" : LowerTitle ,
1191
1189
"imports" : Imports (r , settings ),
1192
1190
}
1193
1191
1194
- pkgName := r .PkgName ()
1195
- pkgConfig := settings .PackageMap [pkgName ]
1196
- if pkgName == "" {
1197
- pkgName = filepath .Base (pkgConfig .Path )
1198
- }
1199
-
1200
1192
dbFile := template .Must (template .New ("table" ).Funcs (funcMap ).Parse (dbTmpl ))
1201
1193
modelsFile := template .Must (template .New ("table" ).Funcs (funcMap ).Parse (modelsTmpl ))
1202
1194
sqlFile := template .Must (template .New ("table" ).Funcs (funcMap ).Parse (sqlTmpl ))
1203
1195
ifaceFile := template .Must (template .New ("table" ).Funcs (funcMap ).Parse (ifaceTmpl ))
1204
1196
1197
+ pkg := settings .Package
1205
1198
tctx := tmplCtx {
1206
- Settings : settings ,
1207
- EmitInterface : pkgConfig .EmitInterface ,
1208
- EmitJSONTags : pkgConfig .EmitJSONTags ,
1209
- EmitPreparedQueries : pkgConfig .EmitPreparedQueries ,
1199
+ Settings : settings . Global ,
1200
+ EmitInterface : pkg .EmitInterface ,
1201
+ EmitJSONTags : pkg .EmitJSONTags ,
1202
+ EmitPreparedQueries : pkg .EmitPreparedQueries ,
1210
1203
Q : "`" ,
1211
- Package : pkgName ,
1204
+ Package : pkg . Name ,
1212
1205
GoQueries : r .GoQueries (settings ),
1213
1206
Enums : r .Enums (settings ),
1214
1207
Structs : r .Structs (settings ),
@@ -1243,7 +1236,7 @@ func Generate(r Generateable, settings GenerateSettings) (map[string]string, err
1243
1236
if err := execute ("models.go" , modelsFile ); err != nil {
1244
1237
return nil , err
1245
1238
}
1246
- if pkgConfig .EmitInterface {
1239
+ if pkg .EmitInterface {
1247
1240
if err := execute ("querier.go" , ifaceFile ); err != nil {
1248
1241
return nil , err
1249
1242
}
0 commit comments