fix: improve SQL queries for tenant desktop task cancellation and add deleted_at field to PublishRecord
Backend CI / Backend (push) Successful in 16m12s

This commit is contained in:
2026-06-19 16:00:09 +08:00
parent 6e0519a232
commit 8a1623b9c6
3 changed files with 26 additions and 19 deletions
@@ -914,26 +914,26 @@ func (q *Queries) ReconcileDesktopTask(ctx context.Context, arg ReconcileDesktop
}
const tenantCancelDesktopTask = `-- name: TenantCancelDesktopTask :one
UPDATE desktop_tasks
UPDATE desktop_tasks AS t
SET status = 'aborted',
error = $1,
active_attempt_id = NULL,
lease_token_hash = NULL,
lease_expires_at = NULL,
updated_at = now()
WHERE desktop_id = $2
AND tenant_id = $3
AND workspace_id = $4
AND status = 'queued'
WHERE t.desktop_id = $2
AND t.tenant_id = $3
AND t.workspace_id = $4
AND t.status = 'queued'
AND EXISTS (
SELECT 1
FROM desktop_publish_jobs AS j
WHERE j.desktop_id = desktop_tasks.job_id
AND j.tenant_id = desktop_tasks.tenant_id
AND j.workspace_id = desktop_tasks.workspace_id
WHERE j.desktop_id = t.job_id
AND j.tenant_id = t.tenant_id
AND j.workspace_id = t.workspace_id
AND j.created_by_user_id = $5
)
RETURNING id, desktop_id, job_id, tenant_id, workspace_id, target_account_id, target_client_id, platform_id, kind, payload, status, dedup_key, active_attempt_id, lease_token_hash, lease_expires_at, attempts, result, error, created_at, updated_at, priority, lane, lane_weight, source, scheduler_group_key, monitor_task_id, supersedes_task_id, control_flags, interrupt_generation, started_at, interrupted_at, interrupt_reason, enqueued_at, publish_submit_started_at
RETURNING t.id, t.desktop_id, t.job_id, t.tenant_id, t.workspace_id, t.target_account_id, t.target_client_id, t.platform_id, t.kind, t.payload, t.status, t.dedup_key, t.active_attempt_id, t.lease_token_hash, t.lease_expires_at, t.attempts, t.result, t.error, t.created_at, t.updated_at, t.priority, t.lane, t.lane_weight, t.source, t.scheduler_group_key, t.monitor_task_id, t.supersedes_task_id, t.control_flags, t.interrupt_generation, t.started_at, t.interrupted_at, t.interrupt_reason, t.enqueued_at, t.publish_submit_started_at
`
type TenantCancelDesktopTaskParams struct {
@@ -945,7 +945,13 @@ type TenantCancelDesktopTaskParams struct {
}
func (q *Queries) TenantCancelDesktopTask(ctx context.Context, arg TenantCancelDesktopTaskParams) (DesktopTask, error) {
row := q.db.QueryRow(ctx, tenantCancelDesktopTask, arg.Error, arg.DesktopID, arg.TenantID, arg.WorkspaceID, arg.UserID)
row := q.db.QueryRow(ctx, tenantCancelDesktopTask,
arg.Error,
arg.DesktopID,
arg.TenantID,
arg.WorkspaceID,
arg.UserID,
)
var i DesktopTask
err := row.Scan(
&i.ID,
@@ -874,6 +874,7 @@ type PublishRecord struct {
UpdatedAt pgtype.Timestamptz `json:"updated_at"`
TargetType string `json:"target_type"`
TargetConnectionID pgtype.Int8 `json:"target_connection_id"`
DeletedAt pgtype.Timestamptz `json:"deleted_at"`
}
type QuotaReservation struct {
@@ -190,26 +190,26 @@ WHERE t.desktop_id = sqlc.arg(desktop_id)
RETURNING t.*;
-- name: TenantCancelDesktopTask :one
UPDATE desktop_tasks
UPDATE desktop_tasks AS t
SET status = 'aborted',
error = sqlc.narg(error),
active_attempt_id = NULL,
lease_token_hash = NULL,
lease_expires_at = NULL,
updated_at = now()
WHERE desktop_id = sqlc.arg(desktop_id)
AND tenant_id = sqlc.arg(tenant_id)
AND workspace_id = sqlc.arg(workspace_id)
AND status = 'queued'
WHERE t.desktop_id = sqlc.arg(desktop_id)
AND t.tenant_id = sqlc.arg(tenant_id)
AND t.workspace_id = sqlc.arg(workspace_id)
AND t.status = 'queued'
AND EXISTS (
SELECT 1
FROM desktop_publish_jobs AS j
WHERE j.desktop_id = desktop_tasks.job_id
AND j.tenant_id = desktop_tasks.tenant_id
AND j.workspace_id = desktop_tasks.workspace_id
WHERE j.desktop_id = t.job_id
AND j.tenant_id = t.tenant_id
AND j.workspace_id = t.workspace_id
AND j.created_by_user_id = sqlc.arg(user_id)
)
RETURNING *;
RETURNING t.*;
-- name: ReconcileDesktopTask :one
UPDATE desktop_tasks