diff options
| author | Kyren223 <Kyren223@proton.me> | 2024-11-28 18:00:50 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2024-11-28 18:00:50 +0200 |
| commit | d0356edef4dc0a14304b8890e8152911740ff87a (patch) | |
| tree | 9f96b2e1b591d9d86970db9102abae04055a5ac7 /internal/data/users_networks.sql.go | |
| parent | c3f8131caf597dc028c08c8dd9f2f65a213e580d (diff) | |
Added position to networks
Diffstat (limited to 'internal/data/users_networks.sql.go')
| -rw-r--r-- | internal/data/users_networks.sql.go | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/internal/data/users_networks.sql.go b/internal/data/users_networks.sql.go new file mode 100644 index 0000000..4c1d84f --- /dev/null +++ b/internal/data/users_networks.sql.go @@ -0,0 +1,229 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 +// source: users_networks.sql + +package data + +import ( + "context" + + "github.com/kyren223/eko/pkg/snowflake" +) + +const getNetworkBannedUsers = `-- name: GetNetworkBannedUsers :many +SELECT + users.id, users.name, users.public_key, users.description, users.is_public_dm, users.is_deleted, + users_networks.ban_reason +FROM users_networks +JOIN users ON users.id = users_networks.user_id +WHERE users_networks.network_id = ? +` + +type GetNetworkBannedUsersRow struct { + User User + BanReason *string +} + +func (q *Queries) GetNetworkBannedUsers(ctx context.Context, networkID snowflake.ID) ([]GetNetworkBannedUsersRow, error) { + rows, err := q.db.QueryContext(ctx, getNetworkBannedUsers, networkID) + if err != nil { + return nil, err + } + defer rows.Close() + var items []GetNetworkBannedUsersRow + for rows.Next() { + var i GetNetworkBannedUsersRow + if err := rows.Scan( + &i.User.ID, + &i.User.Name, + &i.User.PublicKey, + &i.User.Description, + &i.User.IsPublicDM, + &i.User.IsDeleted, + &i.BanReason, + ); 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 getNetworkMembers = `-- name: GetNetworkMembers :many +SELECT + users.id, users.name, users.public_key, users.description, users.is_public_dm, users.is_deleted, + users_networks.joined_at, + users_networks.is_admin, + users_networks.is_muted +FROM users_networks +JOIN users ON users.id = users_networks.user_id +WHERE users_networks.network_id = ? AND is_member = true +` + +type GetNetworkMembersRow struct { + User User + JoinedAt string + IsAdmin bool + IsMuted bool +} + +func (q *Queries) GetNetworkMembers(ctx context.Context, networkID snowflake.ID) ([]GetNetworkMembersRow, error) { + rows, err := q.db.QueryContext(ctx, getNetworkMembers, networkID) + if err != nil { + return nil, err + } + defer rows.Close() + var items []GetNetworkMembersRow + for rows.Next() { + var i GetNetworkMembersRow + if err := rows.Scan( + &i.User.ID, + &i.User.Name, + &i.User.PublicKey, + &i.User.Description, + &i.User.IsPublicDM, + &i.User.IsDeleted, + &i.JoinedAt, + &i.IsAdmin, + &i.IsMuted, + ); 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 getUserNetworks = `-- name: GetUserNetworks :many +SELECT networks.id, networks.owner_id, networks.name, networks.icon, networks.bg_hex_color, networks.fg_hex_color, networks.is_public, users_networks.position FROM networks +JOIN users_networks ON networks.id = users_networks.network_id +WHERE users_networks.user_id = ? +ORDER BY users_networks.position +` + +type GetUserNetworksRow struct { + Network Network + Position *int64 +} + +func (q *Queries) GetUserNetworks(ctx context.Context, userID snowflake.ID) ([]GetUserNetworksRow, error) { + rows, err := q.db.QueryContext(ctx, getUserNetworks, userID) + if err != nil { + return nil, err + } + defer rows.Close() + var items []GetUserNetworksRow + for rows.Next() { + var i GetUserNetworksRow + if err := rows.Scan( + &i.Network.ID, + &i.Network.OwnerID, + &i.Network.Name, + &i.Network.Icon, + &i.Network.BgHexColor, + &i.Network.FgHexColor, + &i.Network.IsPublic, + &i.Position, + ); 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 setNetworkUser = `-- name: SetNetworkUser :one +INSERT INTO users_networks ( + user_id, network_id, + is_member, is_admin, is_muted, + is_banned, ban_reason, position +) VALUES ( + ?1, ?2, + ?3, ?4, ?5, + ?6, ?7, + CASE + WHEN ?3 = false THEN NULL + ELSE (SELECT COUNT(*) FROM users_networks WHERE user_id = ?1) + END +) +ON CONFLICT DO +UPDATE SET + is_member = EXCLUDED.is_member, is_admin = EXCLUDED.is_admin, is_muted = EXCLUDED.is_muted, + is_banned = EXCLUDED.is_banned, ban_reason = EXCLUDED.ban_reason, position = EXCLUDED.position +WHERE user_id = EXCLUDED.user_id AND network_id = EXCLUDED.network_id +RETURNING user_id, network_id, joined_at, is_member, is_admin, is_muted, is_banned, ban_reason, position +` + +type SetNetworkUserParams struct { + UserID snowflake.ID + NetworkID snowflake.ID + IsMember bool + IsAdmin bool + IsMuted bool + IsBanned bool + BanReason *string +} + +func (q *Queries) SetNetworkUser(ctx context.Context, arg SetNetworkUserParams) (UsersNetwork, error) { + row := q.db.QueryRowContext(ctx, setNetworkUser, + arg.UserID, + arg.NetworkID, + arg.IsMember, + arg.IsAdmin, + arg.IsMuted, + arg.IsBanned, + arg.BanReason, + ) + var i UsersNetwork + err := row.Scan( + &i.UserID, + &i.NetworkID, + &i.JoinedAt, + &i.IsMember, + &i.IsAdmin, + &i.IsMuted, + &i.IsBanned, + &i.BanReason, + &i.Position, + ) + return i, err +} + +const swapUserNetworks = `-- name: SwapUserNetworks :exec +UPDATE users_networks SET + position = CASE + WHEN position = ?1 THEN ?2 + WHEN position = ?2 THEN ?1 + END +WHERE user_id = ?3 AND position IN (?1, ?2) +` + +type SwapUserNetworksParams struct { + Pos1 *int64 + Pos2 *int64 + UserID snowflake.ID +} + +func (q *Queries) SwapUserNetworks(ctx context.Context, arg SwapUserNetworksParams) error { + _, err := q.db.ExecContext(ctx, swapUserNetworks, arg.Pos1, arg.Pos2, arg.UserID) + return err +} |
