Giter Club home page Giter Club logo

Comments (5)

jschaf avatar jschaf commented on August 18, 2024 1

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.

jschaf avatar jschaf commented on August 18, 2024

The problem is that inputs types are always assumed to be non-null:

goType, err := tm.resolver.Resolve(input.PgType /*nullable*/, false, pkgPath)

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.

breathe avatar breathe commented on August 18, 2024

Closing this - I'm gathering there is no interest to accept this

from pggen.

breathe avatar breathe commented on August 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.