Skip to content

pgtype.Range[pgtype.Timestamp] issue when using pgx v5 #512

@all2ham

Description

@all2ham

Describe the bug
Encountering a bug where pgtype is not being correctly substituted in the generated model.go for pgtype.Range[pgtype.Timestamp]

Environment (please complete the following information):

  • OS: macos
  • Database: postgres
  • Database driver: pgx
  • Jet version 2.13

Code snippet

		err := pggen.GenerateDSN(cfg.PostgresResources.GetUri(), jetSchema, jetDir,
			template.Default(Dialect).
				UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
					return template.DefaultSchema(schemaMetaData).
						UseModel(template.DefaultModel().
							UseTable(func(table metadata.Table) template.TableModel {
								return template.DefaultTableModel(table).
									UseField(func(columnMetaData metadata.Column) template.TableModelField {
										defaultTableModelField := template.DefaultTableModelField(columnMetaData)
										switch defaultTableModelField.Type.Name {
										case "*string":
											defaultTableModelField.Type = template.NewType(pgtype.Text{})
										case "*int32":
											defaultTableModelField.Type = template.NewType(pgtype.Int4{})
										case "*int64":
											defaultTableModelField.Type = template.NewType(pgtype.Int8{})
										case "*bool":
											defaultTableModelField.Type = template.NewType(pgtype.Bool{})
										case "*float64":
											defaultTableModelField.Type = template.NewType(pgtype.Float8{})
										case "*time.Time":
											defaultTableModelField.Type = template.NewType(pgtype.Timestamp{})
										case "pgtype.Tsrange":
											defaultTableModelField.Type = template.NewType(pgtype.Range[pgtype.Timestamp]{})
										}
										return defaultTableModelField
									})
							}),
						)
				}),

resulting in the following generated file:


//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior  
// and will be lost if the code is regenerated
//

package model


import (
	"github.com/jackc/pgx/v5/pgtype"
)




type TdspRates struct {
	ID int32 `sql:"primary_key"` 
	CreatedAt pgtype.Timestamp  
	Utility string  
	EffectiveInterval pgtype.Range[github.com/jackc/pgx/v5/pgtype.Timestamp]  
	RateCents float64  
	MonthlyFeeCents float64  
}

Expected behavior

In our codebase for postgres tsrange we use pgtype.Range[pgtype.Timestamp]

Any advice on how I can surmount this, this is unfortunately blocking our go-jet adoption

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions