Files
eko/internal/data/users_networks.sql.go
2025-01-06 16:17:59 +02:00

330 lines
7.9 KiB
Go

// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// source: users_networks.sql
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,
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 getNetworkMemberById = `-- name: GetNetworkMemberById :one
SELECT user_id, network_id, joined_at, is_member, is_admin, is_muted, is_banned, ban_reason, position
FROM users_networks
WHERE users_networks.network_id = ? AND users_networks.user_id = ?
`
type GetNetworkMemberByIdParams struct {
NetworkID snowflake.ID
UserID snowflake.ID
}
func (q *Queries) GetNetworkMemberById(ctx context.Context, arg GetNetworkMemberByIdParams) (UserNetwork, error) {
row := q.db.QueryRowContext(ctx, getNetworkMemberById, arg.NetworkID, arg.UserID)
var i UserNetwork
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 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 getUserNetwork = `-- name: GetUserNetwork :one
SELECT user_id, network_id, joined_at, is_member, is_admin, is_muted, is_banned, ban_reason, position FROM users_networks
WHERE user_id = ? AND network_id = ?
`
type GetUserNetworkParams struct {
UserID snowflake.ID
NetworkID snowflake.ID
}
func (q *Queries) GetUserNetwork(ctx context.Context, arg GetUserNetworkParams) (UserNetwork, error) {
row := q.db.QueryRowContext(ctx, getUserNetwork, arg.UserID, arg.NetworkID)
var i UserNetwork
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 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 setMember = `-- name: SetMember :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 SetMemberParams struct {
UserID snowflake.ID
NetworkID snowflake.ID
IsMember bool
IsAdmin bool
IsMuted bool
IsBanned bool
BanReason *string
}
func (q *Queries) SetMember(ctx context.Context, arg SetMemberParams) (UserNetwork, error) {
row := q.db.QueryRowContext(ctx, setMember,
arg.UserID,
arg.NetworkID,
arg.IsMember,
arg.IsAdmin,
arg.IsMuted,
arg.IsBanned,
arg.BanReason,
)
var i UserNetwork
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
}