diff options
author | Runxi Yu <me@runxiyu.org> | 2025-08-18 01:18:48 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-08-18 01:18:48 +0800 |
commit | a85d1d8d6b25e13500b0895209b6343f0b2bc435 (patch) | |
tree | 43d41aa7009bbc39f01b0becd0a7acd588cdf262 /sql/queries | |
parent | TIMESTAMPTZ, not TIMESTAMPZ (diff) | |
download | forge-a85d1d8d6b25e13500b0895209b6343f0b2bc435.tar.gz forge-a85d1d8d6b25e13500b0895209b6343f0b2bc435.tar.zst forge-a85d1d8d6b25e13500b0895209b6343f0b2bc435.zip |
Add sqlc
Diffstat (limited to 'sql/queries')
-rw-r--r-- | sql/queries/groups.sql | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/sql/queries/groups.sql b/sql/queries/groups.sql new file mode 100644 index 0000000..07fe5e7 --- /dev/null +++ b/sql/queries/groups.sql @@ -0,0 +1,27 @@ +-- name: GetGroupIDDescByPath :one +WITH RECURSIVE group_path_cte AS ( + SELECT + id, + parent_group, + name, + 1 AS depth + FROM groups + WHERE name = ($1::text[])[1] + AND parent_group IS NULL + + UNION ALL + + SELECT + g.id, + g.parent_group, + g.name, + group_path_cte.depth + 1 + FROM groups g + JOIN group_path_cte ON g.parent_group = group_path_cte.id + WHERE g.name = ($1::text[])[group_path_cte.depth + 1] + AND group_path_cte.depth + 1 <= cardinality($1::text[]) +) +SELECT c.id, COALESCE(g.description, '') +FROM group_path_cte c +JOIN groups g ON g.id = c.id +WHERE c.depth = cardinality($1::text[]); |