jschaf / pggen

Generate type-safe Go for any Postgres query. If Postgres can run the query, pggen can generate code for it.
MIT License
281 stars 26 forks source link

Consider allowing a flag to decode to more native Go types #104

Open DavidArchibald opened 5 months ago

DavidArchibald commented 5 months ago

So --go-type is wonderful to selectively convert, for example, _timestamptz=[]time.Time. However it'd be great if there could be a flag to do this wholesale, otherwise the number of flags might continually accrue.

I would be willing to look into implementing this if you would like.

jschaf commented 5 months ago

Hi David,

Would you mind expanding the example? I'm not sure I follow.

As a concrete example, here's what our internal invocation looks like. How would it change?

--go-type _bool=[]bool
--go-type _date=[]time.Time
--go-type _int2=[]int16
--go-type _int4=[]int32
--go-type _int8=[]int
--go-type _float8=[]float64
--go-type bool=bool
--go-type boolean=bool
--go-type bytea=[]byte
--go-type citext=string
--go-type currency=github.com/arryved/simc/base/proto/moneypb.Currency
--go-type decimal_xl=github.com/shopspring/decimal.Decimal
--go-type float4=float32
--go-type float8=float64
--go-type int2=int16
--go-type int4=int32
--go-type int8=int
--go-type lnglat=github.com/jackc/pgtype.Point
--go-type ltree=string
--go-type numeric=github.com/shopspring/decimal.Decimal
--go-type text=string
--go-type text16=string
--go-type text64=string
--go-type text128=string
--go-type text256=string
--go-type text1k=string
--go-type text4k=string
--go-type timestamptz=time.Time
--go-type upc=string
DavidArchibald commented 5 months ago

Sorry for the vague issue. Basically I'd want a flag like --use-native-types to provide nearly all of the mappings automatically. I currently maintain a less exhaustive list and I imagine a lot of other people do too but it'd be nice to turn it all on with a single flag.