From 649d237f9e3f9efbb0af08f5af82b776a3d81654 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Thu, 06 Mar 2025 20:29:39 +0800 Subject: [PATCH] group/index: Add group description --- http_handle_group_index.go | 42 ++++++++++++++++++++++++++++++++++++++++++ templates/group.tmpl | 3 +++ diff --git a/http_handle_group_index.go b/http_handle_group_index.go index 429532c0206b7a766ea8ca8f69ac13ec489e9afe..e3f94fde59868270d29d633b4e34efa538e43197 100644 --- a/http_handle_group_index.go +++ b/http_handle_group_index.go @@ -16,8 +16,49 @@ var group_path []string var repos []name_desc_t var subgroups []name_desc_t var err error + var group_description string group_path = params["group_path"].([]string) + + // The group itself + err = database.QueryRow(r.Context(), ` + 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 COALESCE(g.description, '') + FROM group_path_cte c + JOIN groups g ON g.id = c.id + WHERE c.depth = cardinality($1::text[]) + `, + pgtype.FlatArray[string](group_path), + ).Scan(&group_description) + + if err == pgx.ErrNoRows { + http.Error(w, "Group not found", http.StatusNotFound) + return + } else if err != nil { + http.Error(w, "Error getting group: "+err.Error(), http.StatusInternalServerError) + return + } // Repos var rows pgx.Rows @@ -122,6 +163,7 @@ } params["repos"] = repos params["subgroups"] = subgroups + params["description"] = group_description fmt.Println(group_path) diff --git a/templates/group.tmpl b/templates/group.tmpl index f88145805d4c1317878a5ba70bec12440dd3ca96..5ddae0f68a461298d1351924ea397bd2ad900ec3 100644 --- a/templates/group.tmpl +++ b/templates/group.tmpl @@ -14,6 +14,9 @@ {{ template "header" . }}

{{ range $i, $s := .group_path }}{{ $s }}{{ if ne $i (len $group_path) }} / {{ end }}{{ end }} + {{ if .description }} +

{{ .description }}

+ {{ end }} {{ template "group_view" . }}