sqlc icon indicating copy to clipboard operation
sqlc copied to clipboard

Override query return type

Open reddec opened this issue 5 years ago • 5 comments

Let's assume that we have two tables (postgres)

CREATE TABLE foo (
   id BIGSERIAL NOT NULL,
   value TEXT NOT NULL;
);

CREATE TABLE bar (
   id BIGSERIAL NOT NULL,
   value2 TEXT NOT NULL;
);

Problem is that queries

-- name: GetByFooValue :many
SELECT foo.id, bar.id, foo.value FROM foo INNER JOIN bar ON foo.id = bar.id WHERE value = $1

and

-- name: GetByBarValue :many
SELECT foo.id, bar.id, foo.value FROM foo INNER JOIN bar ON foo.id = bar.id WHERE value2 = $1

will generate different response structs (something like GetByBarValueRow and GetByFooValueRow), however by meaning it's the same objects.

I tried to use rename field in configuration but it didn't help. I quickly checked the source code and looks like there is no way to set the output type.

Is it possible to add something like:

  • use rename also for queries types or
  • (IMHO it's better) add an annotation to queries like name: GetByVarValue :type FooBar :many

Thanks!

reddec avatar Nov 13 '20 01:11 reddec

This is exactly what we are looking for in our project, unfortunately it's holding us back from using SQLC, is this in the pipeline?

allochi avatar Jan 22 '23 14:01 allochi

Also related to #755

kyleconroy avatar Sep 22 '23 17:09 kyleconroy

I'd like to comment I have the same issue.

In this example, I get back a PostGetManyRow and a PostsGetByTastyRow for two given queries. These structs are identical except in name. And constantly type asserting them at each call site clutters the code and is tedious.

I thought that maybe the example in embedding structs might solve the issue, but I still get two differently named types for each query.

Any thoughts on this?

Perhaps a configuration option to merge identical structs? Or a paramter in the --name: declaration that enables a merge behavior?

Would the team be open to a PR to fix this?

swetjen avatar Mar 06 '24 00:03 swetjen

Is anybody working on this? I might be willing to issue a PR, if someone leads me in the right direction...

kahunacohen avatar Jun 26 '24 07:06 kahunacohen