This commit is contained in:
oneao committed 2026-03-03 17:28:56 +08:00
1 parent 2efeb7cee2
commit c0531c1d0a
35 files changed
+1817 -984

No files matched your search

@@ -68,3 +68,10 @@ ORDER BY sm.is_default DESC, sm.sort_number ASC;
-- name: UpdateSpaceName :exec
UPDATE space SET name = $1
WHERE id = $2;
-- name: UpdateSpaceOwnerId :exec
UPDATE space set owner_id = $1,update_time = NOW() WHERE id = $2;
-- name: UpdateSpaceInviteCode :exec
UPDATE space set invite_code = $1,update_time = NOW() WHERE id = $2;
@@ -43,6 +43,57 @@ WHERE user_id = $2
-- 退出空间
-- name: UpdateSpaceMemberExit :exec
UPDATE space_member
SET status = 2 AND exit_time = NOW()
SET status = 2,
exit_time = NOW()
WHERE space_id = $1
AND user_id = $2;
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;
@@ -12,6 +12,9 @@ WHERE o.openid = $1
AND o.type = $2
LIMIT 1;
-- name: GetUserById :one
SELECT * FROM "user" WHERE id = $1;
-- name: InsertUser :exec
INSERT INTO "user" (
id,
@@ -211,6 +211,20 @@ func (q *Queries) ListSpacesByUserId(ctx context.Context, userID int64) ([]ListS
return items, nil
}
const updateSpaceInviteCode = `-- name: UpdateSpaceInviteCode :exec
UPDATE space set invite_code = $1,update_time = NOW() WHERE id = $2
`
type UpdateSpaceInviteCodeParams struct {
InviteCode string
ID int64
}
func (q *Queries) UpdateSpaceInviteCode(ctx context.Context, arg UpdateSpaceInviteCodeParams) error {
_, err := q.db.Exec(ctx, updateSpaceInviteCode, arg.InviteCode, arg.ID)
return err
}
const updateSpaceName = `-- name: UpdateSpaceName :exec
UPDATE space SET name = $1
WHERE id = $2
@@ -225,3 +239,17 @@ func (q *Queries) UpdateSpaceName(ctx context.Context, arg UpdateSpaceNameParams
_, err := q.db.Exec(ctx, updateSpaceName, arg.Name, arg.ID)
return err
}
const updateSpaceOwnerId = `-- name: UpdateSpaceOwnerId :exec
UPDATE space set owner_id = $1,update_time = NOW() WHERE id = $2
`
type UpdateSpaceOwnerIdParams struct {
OwnerID int64
ID int64
}
func (q *Queries) UpdateSpaceOwnerId(ctx context.Context, arg UpdateSpaceOwnerIdParams) error {
_, err := q.db.Exec(ctx, updateSpaceOwnerId, arg.OwnerID, arg.ID)
return err
}
@@ -7,6 +7,8 @@ package repo
import (
"context"
"github.com/jackc/pgx/v5/pgtype"
)
const countUserSpaces = `-- name: CountUserSpaces :one
@@ -23,6 +25,68 @@ func (q *Queries) CountUserSpaces(ctx context.Context, userID int64) (int64, err
return count, err
}
const getSpaceMember = `-- name: GetSpaceMember :one
SELECT id, space_id, user_id, role, is_default, sort_number, member_name, status, disabled_time, exit_time, join_time, update_time FROM space_member WHERE space_id = $1 AND user_id = $2
`
type GetSpaceMemberParams struct {
SpaceID int64
UserID int64
}
func (q *Queries) GetSpaceMember(ctx context.Context, arg GetSpaceMemberParams) (SpaceMember, error) {
row := q.db.QueryRow(ctx, getSpaceMember, arg.SpaceID, arg.UserID)
var i SpaceMember
err := row.Scan(
&i.ID,
&i.SpaceID,
&i.UserID,
&i.Role,
&i.IsDefault,
&i.SortNumber,
&i.MemberName,
&i.Status,
&i.DisabledTime,
&i.ExitTime,
&i.JoinTime,
&i.UpdateTime,
)
return i, err
}
const getSpaceMemberByDefault = `-- name: GetSpaceMemberByDefault :one
SELECT
sm.id, sm.space_id, sm.user_id, sm.role, sm.is_default, sm.sort_number, sm.member_name, sm.status, sm.disabled_time, sm.exit_time, sm.join_time, sm.update_time
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
`
// 获取该用户的默认空间
func (q *Queries) GetSpaceMemberByDefault(ctx context.Context, userID int64) (SpaceMember, error) {
row := q.db.QueryRow(ctx, getSpaceMemberByDefault, userID)
var i SpaceMember
err := row.Scan(
&i.ID,
&i.SpaceID,
&i.UserID,
&i.Role,
&i.IsDefault,
&i.SortNumber,
&i.MemberName,
&i.Status,
&i.DisabledTime,
&i.ExitTime,
&i.JoinTime,
&i.UpdateTime,
)
return i, err
}
const getUserSpaceRole = `-- name: GetUserSpaceRole :one
SELECT role
FROM space_member
@@ -72,6 +136,75 @@ func (q *Queries) InsertSpaceMember(ctx context.Context, arg InsertSpaceMemberPa
return err
}
const listSpaceMembers = `-- 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
`
type ListSpaceMembersRow struct {
SpaceID int64
UserID int64
Role int16
MemberStatus int16
MemberName string
MemberUpdateTime pgtype.Timestamptz
JoinTime pgtype.Timestamptz
Avatar pgtype.Text
UserStatus pgtype.Int2
LastLoginTime pgtype.Timestamptz
}
// 获取空间下的成员列表
func (q *Queries) ListSpaceMembers(ctx context.Context, spaceID int64) ([]ListSpaceMembersRow, error) {
rows, err := q.db.Query(ctx, listSpaceMembers, spaceID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []ListSpaceMembersRow
for rows.Next() {
var i ListSpaceMembersRow
if err := rows.Scan(
&i.SpaceID,
&i.UserID,
&i.Role,
&i.MemberStatus,
&i.MemberName,
&i.MemberUpdateTime,
&i.JoinTime,
&i.Avatar,
&i.UserStatus,
&i.LastLoginTime,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateOtherSpacesIsDefault = `-- name: UpdateOtherSpacesIsDefault :exec
UPDATE space_member
SET is_default = $1
@@ -110,7 +243,8 @@ func (q *Queries) UpdateSpaceIsDefault(ctx context.Context, arg UpdateSpaceIsDef
const updateSpaceMemberExit = `-- name: UpdateSpaceMemberExit :exec
UPDATE space_member
SET status = 2 AND exit_time = NOW()
SET status = 2,
exit_time = NOW()
WHERE space_id = $1
AND user_id = $2
`
@@ -126,6 +260,24 @@ func (q *Queries) UpdateSpaceMemberExit(ctx context.Context, arg UpdateSpaceMemb
return err
}
const updateSpaceMemberJoin = `-- name: UpdateSpaceMemberJoin :exec
UPDATE space_member
SET status = 0,
join_time = NOW()
WHERE space_id = $1
AND user_id = $2
`
type UpdateSpaceMemberJoinParams struct {
SpaceID int64
UserID int64
}
func (q *Queries) UpdateSpaceMemberJoin(ctx context.Context, arg UpdateSpaceMemberJoinParams) error {
_, err := q.db.Exec(ctx, updateSpaceMemberJoin, arg.SpaceID, arg.UserID)
return err
}
const updateSpaceMemberName = `-- name: UpdateSpaceMemberName :exec
UPDATE space_member SET member_name = $1
WHERE space_id = $2 AND user_id = $3
@@ -142,3 +294,19 @@ func (q *Queries) UpdateSpaceMemberName(ctx context.Context, arg UpdateSpaceMemb
_, err := q.db.Exec(ctx, updateSpaceMemberName, arg.MemberName, arg.SpaceID, arg.UserID)
return err
}
const updateSpaceMemberRole = `-- name: UpdateSpaceMemberRole :exec
UPDATE space_member SET role = $1,update_time = NOW() WHERE space_id = $2 AND user_id = $3
`
type UpdateSpaceMemberRoleParams struct {
Role int16
SpaceID int64
UserID int64
}
// 修改角色
func (q *Queries) UpdateSpaceMemberRole(ctx context.Context, arg UpdateSpaceMemberRoleParams) error {
_, err := q.db.Exec(ctx, updateSpaceMemberRole, arg.Role, arg.SpaceID, arg.UserID)
return err
}
+19
View File
@@ -52,6 +52,25 @@ func (q *Queries) FindUserByOpenID(ctx context.Context, arg FindUserByOpenIDPara
return i, err
}
const getUserById = `-- name: GetUserById :one
SELECT id, nickname, avatar, status, last_login_time, create_time, update_time FROM "user" WHERE id = $1
`
func (q *Queries) GetUserById(ctx context.Context, id int64) (User, error) {
row := q.db.QueryRow(ctx, getUserById, id)
var i User
err := row.Scan(
&i.ID,
&i.Nickname,
&i.Avatar,
&i.Status,
&i.LastLoginTime,
&i.CreateTime,
&i.UpdateTime,
)
return i, err
}
const insertUser = `-- name: InsertUser :exec
INSERT INTO "user" (
id,