summaryrefslogtreecommitdiff
path: root/internal/data/networks.sql.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-23 20:27:10 +0200
committerKyren223 <Kyren223@proton.me>2024-11-23 20:27:10 +0200
commitb67ab26b89e16d4492145702b0ef899d3d6b7416 (patch)
tree457e88f976e1812a01face1c0096b826ac6d8805 /internal/data/networks.sql.go
parent77d9971982e336aa6c0b816d84f2d37780c02de6 (diff)
Added frequency queries
Diffstat (limited to 'internal/data/networks.sql.go')
-rw-r--r--internal/data/networks.sql.go110
1 files changed, 108 insertions, 2 deletions
diff --git a/internal/data/networks.sql.go b/internal/data/networks.sql.go
index 5a9457a..0752609 100644
--- a/internal/data/networks.sql.go
+++ b/internal/data/networks.sql.go
@@ -11,8 +11,63 @@ import (
"github.com/kyren223/eko/pkg/snowflake"
)
+const createNetwork = `-- name: CreateNetwork :one
+INSERT INTO networks (
+ id, owner_id, name, is_public,
+ icon, bg_hex_color, fg_hex_color
+) VALUES (
+ ?, ?, ?, ?, ?, ?, ?
+)
+RETURNING id, owner_id, name, icon, bg_hex_color, fg_hex_color, is_public
+`
+
+type CreateNetworkParams struct {
+ ID snowflake.ID
+ OwnerID snowflake.ID
+ Name string
+ IsPublic bool
+ Icon string
+ BgHexColor *string
+ FgHexColor string
+}
+
+func (q *Queries) CreateNetwork(ctx context.Context, arg CreateNetworkParams) (Network, error) {
+ row := q.db.QueryRowContext(ctx, createNetwork,
+ arg.ID,
+ arg.OwnerID,
+ arg.Name,
+ arg.IsPublic,
+ arg.Icon,
+ arg.BgHexColor,
+ arg.FgHexColor,
+ )
+ var i Network
+ err := row.Scan(
+ &i.ID,
+ &i.OwnerID,
+ &i.Name,
+ &i.Icon,
+ &i.BgHexColor,
+ &i.FgHexColor,
+ &i.IsPublic,
+ )
+ return i, err
+}
+
+const deleteNetwork = `-- name: DeleteNetwork :exec
+DELETE FROM networks WHERE id = ?
+`
+
+func (q *Queries) DeleteNetwork(ctx context.Context, id snowflake.ID) error {
+ _, err := q.db.ExecContext(ctx, deleteNetwork, id)
+ return err
+}
+
const getBannedUsersInNetwork = `-- name: GetBannedUsersInNetwork :many
-SELECT users.id, users.name, users.public_key, users.description, users.is_public_dm, users.is_deleted, network_banned_users.banned_at, network_banned_users.reason
+SELECT
+ users.id, users.name, users.public_key, users.description, users.is_public_dm, users.is_deleted,
+ network_banned_users.banned_at,
+ network_banned_users.reason
FROM network_banned_users
JOIN users ON users.id = network_banned_users.banned_user_id
WHERE network_banned_users.network_id = ?
@@ -38,7 +93,7 @@ func (q *Queries) GetBannedUsersInNetwork(ctx context.Context, networkID snowfla
&i.User.Name,
&i.User.PublicKey,
&i.User.Description,
- &i.User.IsPublicDm,
+ &i.User.IsPublicDM,
&i.User.IsDeleted,
&i.BannedAt,
&i.Reason,
@@ -111,3 +166,54 @@ func (q *Queries) GetPublicNetworks(ctx context.Context) ([]Network, error) {
}
return items, nil
}
+
+const getUsersInNetwork = `-- name: GetUsersInNetwork :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 = ?
+`
+
+type GetUsersInNetworkRow struct {
+ User User
+ JoinedAt string
+ IsAdmin bool
+ IsMuted bool
+}
+
+func (q *Queries) GetUsersInNetwork(ctx context.Context, networkID snowflake.ID) ([]GetUsersInNetworkRow, error) {
+ rows, err := q.db.QueryContext(ctx, getUsersInNetwork, networkID)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []GetUsersInNetworkRow
+ for rows.Next() {
+ var i GetUsersInNetworkRow
+ 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
+}