Files
workspace/code/allapp/allapp-go/db/queries/space_member.sql
T
2026-03-03 17:28:56 +08:00

100 lines
2.4 KiB
SQL

-- 获取用户在指定空间的角色
-- name: GetUserSpaceRole :one
SELECT role
FROM space_member
WHERE user_id = $1
AND space_id = $2;
-- 插入空间用户
-- name: InsertSpaceMember :exec
INSERT INTO space_member(id,space_id,user_id,role,is_default,member_name,sort_number,join_time,update_time)
VALUES ($1,$2,$3,$4,$5,$6,$7,NOW(),NOW());
-- 合计某个用户的空间数量
-- name: CountUserSpaces :one
SELECT COUNT(1)
FROM space_member
WHERE user_id = $1;
-- 更新用户在空间内的名称
-- name: UpdateSpaceMemberName :exec
UPDATE space_member SET member_name = $1
WHERE space_id = $2 AND user_id = $3;
-- 更新空间是否为默认
-- name: UpdateSpaceIsDefault :exec
UPDATE space_member SET is_default = $1
WHERE space_id = $2 AND user_id = $3;
-- 将用户的其它空间更新为非默认
-- name: UpdateOtherSpacesIsDefault :exec
UPDATE space_member
SET is_default = $1
WHERE user_id = $2
AND space_id != $3;
-- 更新空间顺序
-- name: BatchUpdateSpaceSortNumber :batchexec
UPDATE space_member
SET sort_number = $1
WHERE user_id = $2
AND space_id = $3;
-- 退出空间
-- name: UpdateSpaceMemberExit :exec
UPDATE space_member
SET status = 2,
exit_time = NOW()
WHERE space_id = $1
AND user_id = $2;
-- name: UpdateSpaceMemberJoin :exec
UPDATE space_member
SET status = 0,
join_time = NOW()
WHERE space_id = $1
AND user_id = $2;
-- 获取空间下的成员列表
-- name: ListSpaceMembers :many
SELECT
sm.space_id,
sm.user_id,
sm.role,
sm.status AS member_status,
sm.member_name,
sm.update_time AS member_update_time,
sm.join_time,
u.avatar,
u.status AS user_status,
u.last_login_time
FROM space_member sm
LEFT JOIN "user" u
ON sm.user_id = u.id
LEFT JOIN space s
ON sm.space_id = s.id
WHERE sm.space_id = $1
AND sm.status != 2
AND s.status != 2
ORDER BY sm.role ASC, sm.join_time ASC;
-- name: GetSpaceMember :one
SELECT * FROM space_member WHERE space_id = $1 AND user_id = $2;
-- 修改角色
-- name: UpdateSpaceMemberRole :exec
UPDATE space_member SET role = $1,update_time = NOW() WHERE space_id = $2 AND user_id = $3;
-- 获取该用户的默认空间
-- name: GetSpaceMemberByDefault :one
SELECT
sm.*
FROM space_member sm
LEFT JOIN space s
ON sm.space_id = s.id
WHERE sm.status != 2
AND s.status != 2
AND sm.is_default = 1
AND sm.user_id = $1;