feat: support media account unbind requests

This commit is contained in:
2026-06-18 23:49:01 +08:00
parent fd37263116
commit 889a575188
7 changed files with 708 additions and 27 deletions
@@ -68,8 +68,8 @@ type DesktopAccountRepository interface {
Upsert(ctx context.Context, params UpsertDesktopAccountParams) (*DesktopAccount, error)
Patch(ctx context.Context, params PatchDesktopAccountParams) (*DesktopAccount, error)
Tombstone(ctx context.Context, desktopID uuid.UUID, workspaceID int64, clientID uuid.UUID, ifSyncVersion int64) (*DesktopAccount, error)
MarkDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID int64) (*DesktopAccount, error)
ClearDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID int64) (*DesktopAccount, error)
MarkDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID, userID int64) (*DesktopAccount, error)
ClearDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID, userID int64) (*DesktopAccount, error)
}
type desktopAccountRepository struct {
@@ -222,10 +222,11 @@ func (r *desktopAccountRepository) Tombstone(ctx context.Context, desktopID uuid
return desktopAccountFromTombstoneRow(row)
}
func (r *desktopAccountRepository) MarkDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID int64) (*DesktopAccount, error) {
func (r *desktopAccountRepository) MarkDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID, userID int64) (*DesktopAccount, error) {
row, err := r.q.MarkDesktopAccountDeleteRequested(ctx, generated.MarkDesktopAccountDeleteRequestedParams{
DesktopID: pgUUID(desktopID),
WorkspaceID: workspaceID,
UserID: userID,
})
if err != nil {
return nil, err
@@ -233,10 +234,11 @@ func (r *desktopAccountRepository) MarkDeleteRequested(ctx context.Context, desk
return desktopAccountFromMarkDeleteRow(row)
}
func (r *desktopAccountRepository) ClearDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID int64) (*DesktopAccount, error) {
func (r *desktopAccountRepository) ClearDeleteRequested(ctx context.Context, desktopID uuid.UUID, workspaceID, userID int64) (*DesktopAccount, error) {
row, err := r.q.ClearDesktopAccountDeleteRequested(ctx, generated.ClearDesktopAccountDeleteRequestedParams{
DesktopID: pgUUID(desktopID),
WorkspaceID: workspaceID,
UserID: userID,
})
if err != nil {
return nil, err
@@ -18,6 +18,7 @@ SET delete_requested_at = NULL,
updated_at = now()
WHERE desktop_id = $1
AND workspace_id = $2
AND user_id = $3
AND deleted_at IS NULL
RETURNING
desktop_id,
@@ -43,6 +44,7 @@ RETURNING
type ClearDesktopAccountDeleteRequestedParams struct {
DesktopID pgtype.UUID `json:"desktop_id"`
WorkspaceID int64 `json:"workspace_id"`
UserID int64 `json:"user_id"`
}
type ClearDesktopAccountDeleteRequestedRow struct {
@@ -67,7 +69,7 @@ type ClearDesktopAccountDeleteRequestedRow struct {
}
func (q *Queries) ClearDesktopAccountDeleteRequested(ctx context.Context, arg ClearDesktopAccountDeleteRequestedParams) (ClearDesktopAccountDeleteRequestedRow, error) {
row := q.db.QueryRow(ctx, clearDesktopAccountDeleteRequested, arg.DesktopID, arg.WorkspaceID)
row := q.db.QueryRow(ctx, clearDesktopAccountDeleteRequested, arg.DesktopID, arg.WorkspaceID, arg.UserID)
var i ClearDesktopAccountDeleteRequestedRow
err := row.Scan(
&i.DesktopID,
@@ -449,6 +451,7 @@ SET delete_requested_at = now(),
updated_at = now()
WHERE desktop_id = $1
AND workspace_id = $2
AND user_id = $3
AND deleted_at IS NULL
RETURNING
desktop_id,
@@ -474,6 +477,7 @@ RETURNING
type MarkDesktopAccountDeleteRequestedParams struct {
DesktopID pgtype.UUID `json:"desktop_id"`
WorkspaceID int64 `json:"workspace_id"`
UserID int64 `json:"user_id"`
}
type MarkDesktopAccountDeleteRequestedRow struct {
@@ -498,7 +502,7 @@ type MarkDesktopAccountDeleteRequestedRow struct {
}
func (q *Queries) MarkDesktopAccountDeleteRequested(ctx context.Context, arg MarkDesktopAccountDeleteRequestedParams) (MarkDesktopAccountDeleteRequestedRow, error) {
row := q.db.QueryRow(ctx, markDesktopAccountDeleteRequested, arg.DesktopID, arg.WorkspaceID)
row := q.db.QueryRow(ctx, markDesktopAccountDeleteRequested, arg.DesktopID, arg.WorkspaceID, arg.UserID)
var i MarkDesktopAccountDeleteRequestedRow
err := row.Scan(
&i.DesktopID,
@@ -260,6 +260,7 @@ SET delete_requested_at = now(),
updated_at = now()
WHERE desktop_id = sqlc.arg(desktop_id)
AND workspace_id = sqlc.arg(workspace_id)
AND user_id = sqlc.arg(user_id)
AND deleted_at IS NULL
RETURNING
desktop_id,
@@ -288,6 +289,7 @@ SET delete_requested_at = NULL,
updated_at = now()
WHERE desktop_id = sqlc.arg(desktop_id)
AND workspace_id = sqlc.arg(workspace_id)
AND user_id = sqlc.arg(user_id)
AND deleted_at IS NULL
RETURNING
desktop_id,