From 547593d3159d8772392e81b40082928094b35b8c Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Mon, 6 Jan 2025 16:17:59 +0200 Subject: Fleshed out and fixed issues in both the server and client for how networks and members work --- internal/data/users_networks.sql.go | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'internal/data/users_networks.sql.go') diff --git a/internal/data/users_networks.sql.go b/internal/data/users_networks.sql.go index 8191fa2..e180b51 100644 --- a/internal/data/users_networks.sql.go +++ b/internal/data/users_networks.sql.go @@ -7,10 +7,55 @@ package data import ( "context" + "strings" "github.com/kyren223/eko/pkg/snowflake" ) +const filterUsersInNetwork = `-- name: FilterUsersInNetwork :many +SELECT user_id FROM users_networks +WHERE network_id = ? AND user_id IN (/*SLICE:users*/?) +` + +type FilterUsersInNetworkParams struct { + NetworkID snowflake.ID + Users []snowflake.ID +} + +func (q *Queries) FilterUsersInNetwork(ctx context.Context, arg FilterUsersInNetworkParams) ([]snowflake.ID, error) { + query := filterUsersInNetwork + var queryParams []interface{} + queryParams = append(queryParams, arg.NetworkID) + if len(arg.Users) > 0 { + for _, v := range arg.Users { + queryParams = append(queryParams, v) + } + query = strings.Replace(query, "/*SLICE:users*/?", strings.Repeat(",?", len(arg.Users))[1:], 1) + } else { + query = strings.Replace(query, "/*SLICE:users*/?", "NULL", 1) + } + rows, err := q.db.QueryContext(ctx, query, queryParams...) + if err != nil { + return nil, err + } + defer rows.Close() + var items []snowflake.ID + for rows.Next() { + var user_id snowflake.ID + if err := rows.Scan(&user_id); err != nil { + return nil, err + } + items = append(items, user_id) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + const getNetworkBannedUsers = `-- name: GetNetworkBannedUsers :many SELECT users.id, users.name, users.public_key, users.description, users.is_public_dm, users.is_deleted, -- cgit v1.3.1