You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-- name: ListRolesWithPermissions :many-- model: Roles-- path: internal/domain/rolesSELECTr.role_id,
r.display_name,
r.description,
array_agg(permissions.method)::text[] AS permissions
FROM roles r
LEFT JOIN permissions USING (role_id)
GROUP BYr.role_id;
-- name ListRoles :many-- model: Roles-- path: internal/domain/rolesSELECT role_id, display_name, description FROM roles; /* returned colums exists in the model so we can reuse it */
It isn't generated file! internal/domain/roles
typeRolestruct {
RoleID uuid.UUID// here we can add some custom struct tags and methodsDisplayNamestringDescriptionstringPermissions []sql.NullString// using []string throws an error if an array is empty
}
P.S. These features can be useful because with it we can both use sqlc and follow Clean Architecture. And reuse structs for tables for complex queries with joins.
So my question is if I'd correctly implement this functionality would you approve PR (I'm asking because this feature can be not in the spirit of the project)
I agree this would be useful. Especially when you have a few queries with different WHERE clauses that return the same columns.
This proposal has one big question: How would we verify that the given struct matches the data types returned from the query?
Do we assert they match exactly with the types sqlc would've chosen? That'd be safe, but I think a bunch of people here are expecting to use this to override exactly that? Also, if the types match 1:1, Go would allow you to cast it anyway.
If we allow uncheck structs, wouldn't that defeat one of sqlc's USPs: That you don't have runtime failures for type mismatches.
Activity
mlukasik-dev commentedon Nov 1, 2020
This feature could help solving issues like: #185 , #534 , #658
jonleopard commentedon Dec 2, 2020
Would also love this! I use sqlx and frequently use tags like
db:"user_id" json:"id"orjson:"password_confirm" validate:"eqfield=Password"Jille commentedon Jul 26, 2023
I agree this would be useful. Especially when you have a few queries with different WHERE clauses that return the same columns.
This proposal has one big question: How would we verify that the given struct matches the data types returned from the query?
Would love to hear your thoughts on this.
jamesleeht commentedon Aug 2, 2023
Also very interested in this feature.
Here are some other closely related issues: #387 #444