Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make getDefinedKeys public? #5

Open
canadaduane opened this issue Jul 9, 2020 · 2 comments
Open

Make getDefinedKeys public? #5

canadaduane opened this issue Jul 9, 2020 · 2 comments

Comments

@canadaduane
Copy link
Contributor

I have an update function that takes 0 or more parameters, and updates a table:

  updateRelm: async (client, {
    relmName,
    isPublic,
    encryptedPassword,
    defaultEntryway,
  }) => {
    const updates = {
      is_public: isPublic,
      encrypted_password: encryptedPassword,
      default_entryway: defaultEntryway
    }
    const res = await client.query(sql`
      ${UPDATE('relms', updates)}
      WHERE relm = ${relmName}
      RETURNING *
    `)
    return mkRelm(res.rows[0])
  }

When 0 parameters are passed in, I get a SQL syntax error:

 error: syntax error at or near ")"

Digging in, I find that indeed, this SQL is invalid:

UPDATE "relms" SET () = ROW () WHERE relm = $1 RETURNING *

Is there a simple way to check that the updates object in my function has any non-undefined values? Maybe export getDefinedKeys from pg-sql-helpers and check that length > 0?

@ianstormtaylor
Copy link
Owner

@canadaduane ah interesting, I'd be open to some sort of helper exported to do that. Maybe there's a specific isEmpty helper that we could add for this use case?

@canadaduane
Copy link
Contributor Author

Sure! I think that would make sense. Checking for empty may be the only use case where it's needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants