sqlc-dev / sqlc-gen-typescript

276 stars 11 forks source link

Configure type mapping #37

Open frankvollebregt opened 1 week ago

frankvollebregt commented 1 week ago

Thank you for this cool and useful utility!

I've gotten everything working with my PostgresQL database, and noticed that all my BIGINT columns get returned as a string in the resulting Typescript interfaces.

I came across #15, which acknowledges this behavior and results in it being added for MySQL too. But I was wondering why the String approach was chosen instead of using the Javascript BigInt primitive.

Intuitively, it makes more sense to me to use and return BigInts as it corresponds more directly with the real data, but I assume there is a reasoning (compatibility?) for using a simple String instead.

In some rare cases, I want to compare two BIGINT values, say A > B, which works fine with Strings until one has more digits (e.g. '999' > '1000' results in true). Should I just find a work-around for these cases (maybe use some padding zeroes to start), or is there some sense in allowing the use of the BigInt primitive instead of a string?

And as an additional question, are there any options to influence the type mapping from the column types in my schema at all?

yshrsmz commented 1 week ago

I think it's to keep sqlc simple. Just to keep it a thin wrapper for each DB driver libs. Since node-mysql2 only supports number or string for BIGINT, converting to JavaScript BigInt type adds extra complexity to sqlc.