diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-13 09:43:22 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-13 09:43:22 +0800 |
commit | 91ed68b30f58e016ddcbb6f14c3395322115d464 (patch) | |
tree | 9493ec7e9d958356a267abe8664a8e0a417f3d6c /database.go | |
parent | http_*.go: Use http.Error (diff) | |
download | forge-91ed68b30f58e016ddcbb6f14c3395322115d464.tar.gz forge-91ed68b30f58e016ddcbb6f14c3395322115d464.tar.zst forge-91ed68b30f58e016ddcbb6f14c3395322115d464.zip |
database.go: query_list[T any]
Diffstat (limited to '')
-rw-r--r-- | database.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/database.go b/database.go new file mode 100644 index 0000000..cf4f4ba --- /dev/null +++ b/database.go @@ -0,0 +1,29 @@ +package main + +import ( + "context" +) + +func query_list[T any](ctx context.Context, query string, args ...any) ([]T, error) { + rows, err := database.Query(ctx, query, args...) + if err != nil { + return nil, err + } + defer rows.Close() + + var result []T + for rows.Next() { + var item T + if err := rows.Scan(&item); err != nil { + return nil, err + } + result = append(result, item) + } + + if err := rows.Err(); err != nil { + return nil, err + } + + return result, nil +} + |