diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-02-13 16:49:07 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-02-13 16:49:07 +0200 |
| commit | cfc5fa3d5e9036400b33a2835cc284f26a872ad9 (patch) | |
| tree | 9d2ba0ba3d87ad98443383358075e6e299e8bb77 /internal/data | |
| parent | ab4b010e95360405d344e2859df423dc9d3b02fe (diff) | |
Users that are no longer members (left/kicked/banned) now get fetched
and show their names properly in messages
Diffstat (limited to 'internal/data')
| -rw-r--r-- | internal/data/users.sql.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/internal/data/users.sql.go b/internal/data/users.sql.go index b68a207..dad7aea 100644 --- a/internal/data/users.sql.go +++ b/internal/data/users.sql.go @@ -7,6 +7,7 @@ package data import ( "context" + "strings" "crypto/ed25519" "github.com/kyren223/eko/pkg/snowflake" @@ -102,6 +103,51 @@ func (q *Queries) GetUserData(ctx context.Context, userID snowflake.ID) (string, return data, err } +const getUsersByIds = `-- name: GetUsersByIds :many +SELECT id, name, public_key, description, is_public_dm, is_deleted FROM users +WHERE id IN (/*SLICE:ids*/?) +` + +func (q *Queries) GetUsersByIds(ctx context.Context, ids []snowflake.ID) ([]User, error) { + query := getUsersByIds + var queryParams []interface{} + if len(ids) > 0 { + for _, v := range ids { + queryParams = append(queryParams, v) + } + query = strings.Replace(query, "/*SLICE:ids*/?", strings.Repeat(",?", len(ids))[1:], 1) + } else { + query = strings.Replace(query, "/*SLICE:ids*/?", "NULL", 1) + } + rows, err := q.db.QueryContext(ctx, query, queryParams...) + if err != nil { + return nil, err + } + defer rows.Close() + var items []User + for rows.Next() { + var i User + if err := rows.Scan( + &i.ID, + &i.Name, + &i.PublicKey, + &i.Description, + &i.IsPublicDM, + &i.IsDeleted, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + const setUserData = `-- name: SetUserData :one INSERT INTO user_data ( user_id, data |
