summaryrefslogtreecommitdiff
path: root/query/members.sql
diff options
context:
space:
mode:
Diffstat (limited to 'query/members.sql')
-rw-r--r--query/members.sql37
1 files changed, 37 insertions, 0 deletions
diff --git a/query/members.sql b/query/members.sql
new file mode 100644
index 0000000..04e04cd
--- /dev/null
+++ b/query/members.sql
@@ -0,0 +1,37 @@
+-- name: GetMembers :many
+SELECT
+ sqlc.embed(users),
+ sqlc.embed(members)
+FROM members
+JOIN users ON users.id = members.user_id
+WHERE network_id = ? AND is_member = true;
+
+-- name: GetMemberById :one
+SELECT * FROM members
+WHERE network_id = ? AND user_id = ?;
+
+-- name: GetNetworksOfUser :many
+SELECT networks.* FROM networks
+JOIN members ON networks.id = members.network_id
+WHERE members.user_id = ?;
+
+-- name: SetMember :one
+INSERT INTO members (
+ user_id, network_id,
+ is_member, is_admin, is_muted,
+ is_banned, ban_reason
+) VALUES (
+ @user_id, @network_id,
+ @is_member, @is_admin, @is_muted,
+ @is_banned, @ban_reason
+)
+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 *;
+
+-- name: FilterUsersInNetwork :many
+SELECT user_id FROM members
+WHERE network_id = ? AND user_id IN (sqlc.slice('users'));