fix: add archived query parameter to chat list endpoint (#22562)

Despite the SDK type having an `Archived` field for chats, this data was
never fetched from the database — the `GetChatsByOwnerID` query
hardcoded `AND archived = false`, and the `convertChat` function never
mapped the field.

This PR adds an optional `archived` query parameter to `GET
/api/experimental/chats`:

| Value | Behavior |
|-------|----------|
| *(not provided)* | Returns all chats (active and archived) |
| `archived=false` | Returns only non-archived chats |
| `archived=true` | Returns only archived chats |

This follows the same pattern used by template versions
(`sqlc.narg('archived')` nullable boolean).

Also fixes `convertChat` to populate the `Archived` field in API
responses, which was never being set despite existing on the SDK type.
This commit is contained in:
Danielle Maywood
2026-03-03 20:39:19 +00:00
committed by GitHub
parent 8a2635285b
commit d2d956edb1
11 changed files with 101 additions and 29 deletions
+12 -2
View File
@@ -6,6 +6,7 @@ import (
"fmt"
"io"
"net/http"
"net/url"
"strings"
"time"
@@ -501,9 +502,18 @@ type chatStreamEnvelope struct {
Data json.RawMessage `json:"data,omitempty"`
}
// ListChatsOptions are optional parameters for ListChats.
type ListChatsOptions struct {
Archived *bool
}
// ListChats returns all chats for the authenticated user.
func (c *Client) ListChats(ctx context.Context) ([]Chat, error) {
res, err := c.Request(ctx, http.MethodGet, "/api/experimental/chats", nil)
func (c *Client) ListChats(ctx context.Context, opts *ListChatsOptions) ([]Chat, error) {
qp := url.Values{}
if opts != nil && opts.Archived != nil {
qp.Set("archived", fmt.Sprintf("%t", *opts.Archived))
}
res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/experimental/chats?%s", qp.Encode()), nil)
if err != nil {
return nil, err
}