-
Notifications
You must be signed in to change notification settings - Fork 923
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Example:
db/queries/roles.sql
-- name: ListRolesWithPermissions :many
-- model: Roles
-- path: internal/domain/roles
SELECT
r.role_id,
r.display_name,
r.description,
array_agg(permissions.method)::text[] AS permissions
FROM roles r
LEFT JOIN permissions USING (role_id)
GROUP BY r.role_id;
-- name ListRoles :many
-- model: Roles
-- path: internal/domain/roles
SELECT 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
type Role struct {
RoleID uuid.UUID // here we can add some custom struct tags and methods
DisplayName string
Description string
Permissions []sql.NullString // using []string throws an error if an array is empty
}
Generated method
func (q *Queries) ListRoles(ctx context.Context) ([]roles.Role, error)
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)
mvrhov, reddec, kejith, oscartbeaumont, veverkap and 53 morekejith, hrshadhin, aliml92, jamesleeht, LeoNero and 3 more
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request