summaryrefslogtreecommitdiff
path: root/internal
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
parent77d9971982e336aa6c0b816d84f2d37780c02de6 (diff)
Added frequency queries
Diffstat (limited to 'internal')
-rw-r--r--internal/data/frequencies.sql.go46
-rw-r--r--internal/data/models.go2
-rw-r--r--internal/data/networks.sql.go110
-rw-r--r--internal/data/users.sql.go38
4 files changed, 166 insertions, 30 deletions
diff --git a/internal/data/frequencies.sql.go b/internal/data/frequencies.sql.go
index d978f1f..ae7cd43 100644
--- a/internal/data/frequencies.sql.go
+++ b/internal/data/frequencies.sql.go
@@ -13,9 +13,12 @@ import (
const createFrequency = `-- name: CreateFrequency :one
INSERT INTO frequencies (
- id, network_id, name
+ id, network_id,
+ name, hex_color,
+ perms, position
) VALUES (
- ?, ?, ?
+ ?, ?, ?, ?, ?,
+ (SELECT COUNT(*) FROM frequencies WHERE network_id = ?)
)
RETURNING id, network_id, name, hex_color, perms, position
`
@@ -24,10 +27,18 @@ type CreateFrequencyParams struct {
ID snowflake.ID
NetworkID snowflake.ID
Name string
+ HexColor *string
+ Perms int64
}
func (q *Queries) CreateFrequency(ctx context.Context, arg CreateFrequencyParams) (Frequency, error) {
- row := q.db.QueryRowContext(ctx, createFrequency, arg.ID, arg.NetworkID, arg.Name)
+ row := q.db.QueryRowContext(ctx, createFrequency,
+ arg.ID,
+ arg.NetworkID,
+ arg.Name,
+ arg.HexColor,
+ arg.Perms,
+ )
var i Frequency
err := row.Scan(
&i.ID,
@@ -40,6 +51,15 @@ func (q *Queries) CreateFrequency(ctx context.Context, arg CreateFrequencyParams
return i, err
}
+const deleteFrequency = `-- name: DeleteFrequency :exec
+DELETE FROM frequencies WHERE id = ?
+`
+
+func (q *Queries) DeleteFrequency(ctx context.Context, id snowflake.ID) error {
+ _, err := q.db.ExecContext(ctx, deleteFrequency, id)
+ return err
+}
+
const getNetworkFrequencies = `-- name: GetNetworkFrequencies :many
SELECT id, network_id, name, hex_color, perms, position FROM frequencies
WHERE network_id = ?
@@ -75,3 +95,23 @@ func (q *Queries) GetNetworkFrequencies(ctx context.Context, networkID snowflake
}
return items, nil
}
+
+const swapFrequencies = `-- name: SwapFrequencies :exec
+UPDATE frequencies SET
+ position = CASE
+ WHEN position = ? THEN ?
+ WHEN position = ? THEN ?
+ END
+WHERE network_id = ? AND position IN (?, ?)
+`
+
+type SwapFrequenciesParams struct {
+ Pos1 int64
+ Pos2 int64
+ NetworkID snowflake.ID
+}
+
+func (q *Queries) SwapFrequencies(ctx context.Context, arg SwapFrequenciesParams) error {
+ _, err := q.db.ExecContext(ctx, swapFrequencies, arg.Pos1, arg.Pos2, arg.NetworkID)
+ return err
+}
diff --git a/internal/data/models.go b/internal/data/models.go
index 193b0f5..fab7489 100644
--- a/internal/data/models.go
+++ b/internal/data/models.go
@@ -49,7 +49,7 @@ type User struct {
Name string
PublicKey ed25519.PublicKey
Description *string
- IsPublicDm bool
+ IsPublicDM bool
IsDeleted bool
}
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
+}
diff --git a/internal/data/users.sql.go b/internal/data/users.sql.go
index 9728c21..4411a80 100644
--- a/internal/data/users.sql.go
+++ b/internal/data/users.sql.go
@@ -35,31 +35,21 @@ func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (User, e
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err
}
-const deleteUser = `-- name: DeleteUser :one
+const deleteUser = `-- name: DeleteUser :exec
UPDATE users SET
is_deleted = true
WHERE id = ? AND is_deleted = false
-RETURNING id, name, public_key, description, is_public_dm, is_deleted
`
-func (q *Queries) DeleteUser(ctx context.Context, id snowflake.ID) (User, error) {
- row := q.db.QueryRowContext(ctx, deleteUser, id)
- var i User
- err := row.Scan(
- &i.ID,
- &i.Name,
- &i.PublicKey,
- &i.Description,
- &i.IsPublicDm,
- &i.IsDeleted,
- )
- return i, err
+func (q *Queries) DeleteUser(ctx context.Context, id snowflake.ID) error {
+ _, err := q.db.ExecContext(ctx, deleteUser, id)
+ return err
}
const getDeletedUserById = `-- name: GetDeletedUserById :one
@@ -75,7 +65,7 @@ func (q *Queries) GetDeletedUserById(ctx context.Context, id snowflake.ID) (User
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err
@@ -94,7 +84,7 @@ func (q *Queries) GetUserById(ctx context.Context, id snowflake.ID) (User, error
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err
@@ -113,7 +103,7 @@ func (q *Queries) GetUserByPublicKey(ctx context.Context, publicKey ed25519.Publ
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err
@@ -139,7 +129,7 @@ func (q *Queries) SetUserDescription(ctx context.Context, arg SetUserDescription
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err
@@ -165,7 +155,7 @@ func (q *Queries) SetUserName(ctx context.Context, arg SetUserNameParams) (User,
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err
@@ -179,19 +169,19 @@ RETURNING id, name, public_key, description, is_public_dm, is_deleted
`
type SetUserPublicDMsParams struct {
- IsPublicDm bool
+ IsPublicDM bool
ID snowflake.ID
}
func (q *Queries) SetUserPublicDMs(ctx context.Context, arg SetUserPublicDMsParams) (User, error) {
- row := q.db.QueryRowContext(ctx, setUserPublicDMs, arg.IsPublicDm, arg.ID)
+ row := q.db.QueryRowContext(ctx, setUserPublicDMs, arg.IsPublicDM, arg.ID)
var i User
err := row.Scan(
&i.ID,
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err
@@ -217,7 +207,7 @@ func (q *Queries) SetUserPublicKey(ctx context.Context, arg SetUserPublicKeyPara
&i.Name,
&i.PublicKey,
&i.Description,
- &i.IsPublicDm,
+ &i.IsPublicDM,
&i.IsDeleted,
)
return i, err