Comments (5)
Hi there, I'm interested but life is a bit crazy (we just had our second kiddo). I like the idea of pggen.optional
with maybe some tweaks to naming. Optional args fill a gap in pggen.
sqlc calls this sqlc.narg
https://docs.sqlc.dev/en/stable/howto/named_parameters.html
from pggen.
The problem is that inputs types are always assumed to be non-null:
pggen/internal/codegen/golang/templater.go
Line 147 in 2489d54
I probably can't change that decision without breaking existing code.
We use sentinel values as a stand-in for null with a few helper functions. This works pretty well with Go's default values. Here's what it looks like:
SELECT
default_if_empty(pggen.arg('foo'), 'my_default_value')
If Foo is an empty string, it'll trigger the default value. Here's the function definition (overloaded with other types):
CREATE FUNCTION default_if_empty(s text, default_str text) RETURNS text AS $$
SELECT coalesce(nullif(s, ''), default_str)
$$ LANGUAGE sql IMMUTABLE PARALLEL SAFE;
from pggen.
Closing this - I'm gathering there is no interest to accept this
from pggen.
Congratulations on the baby! 🍼
When you have time to circle back around to this, feel free to drop your thoughts and I'm happy to update that PR as needed. :)
Cheers!
from pggen.
Related Issues (20)
- Encoder panics on composite type arrays containing pgtype.Numeric HOT 1
- SELECT * FROM x and UPDATE|DELETE|INSERT x RETURNING * should use the same type HOT 2
- Support for JSONB? HOT 3
- Boolean arrays don't support --go-type mapping to []bool
- Commit broke generation of custom types HOT 5
- Dynamic table name HOT 3
- Generated code for insert func, individual parameters vs single struct HOT 2
- Type override to *time.Time missing time package import HOT 4
- PGX v5 HOT 12
- Nullability seemingly not respected when only one string column is returned HOT 7
- inconsistent return structures generated HOT 1
- Support for In conditions HOT 3
- Error when using bytea datatype HOT 1
- Proposal: Configure struct generation capability HOT 4
- Unexported genericBatch prevents GoMock mockgen on Querier interface HOT 4
- possible to support a two-argument pggen.arg eg `pggen.arg(param text, default_value anyelement)`? HOT 9
- Proposal: Add CLI flag to always generate JSON tags for structs HOT 7
- Tracing and Testing HOT 1
- Embedded composite types using a pointer HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pggen.