-- 根据id获取分享空间信息 -- name: GetSpaceById :one SELECT * FROM space WHERE id = $1; -- 创建空间 -- name: InsertSpace :exec INSERT INTO space ( id,name,invite_code,owner_id,create_time,update_time ) VALUES ($1,$2,$3,$4,NOW(),NOW()); -- name: DissolveSpace :exec UPDATE space SET status = 2, dissolve_time = NOW(), update_time = NOW() WHERE id = $1; -- 根据邀请码获取 -- name: GetSpaceByInviteCode :one SELECT * FROM space WHERE invite_code = $1; -- name: ListSpacesByUserId :many SELECT s.id AS space_id, s.owner_id, s.name, sm.role, COALESCE(mc.member_count, 0) AS member_count, sm.is_default, sm.member_name, sm.sort_number FROM space s JOIN space_member sm ON s.id = sm.space_id LEFT JOIN ( SELECT space_id, COUNT(*) AS member_count FROM space_member GROUP BY space_id ) mc ON s.id = mc.space_id WHERE sm.user_id = $1 ORDER BY sm.is_default DESC, sm.sort_number ASC; -- name: GetSpaceByUserIdAndSpaceId :one SELECT s.id AS space_id, s.owner_id, s.name, sm.role, COALESCE(mc.member_count, 0) AS member_count, sm.is_default, sm.member_name, sm.sort_number FROM space s JOIN space_member sm ON s.id = sm.space_id LEFT JOIN ( SELECT space_id, COUNT(*) AS member_count FROM space_member GROUP BY space_id ) mc ON s.id = mc.space_id WHERE sm.user_id = $1 AND s.id = $2 ORDER BY sm.is_default DESC, sm.sort_number ASC; -- name: UpdateSpaceName :exec UPDATE space SET name = $1 WHERE id = $2;