Files
geo/server/internal/tenant/repository/queries/desktop_account.sql
T
root 97ae601cfd
Desktop Client Build / Resolve Build Metadata (push) Successful in 28s
Frontend CI / Frontend (push) Successful in 2m53s
Backend CI / Backend (push) Successful in 16m10s
Desktop Client Build / Build Desktop Client (push) Successful in 23m44s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 50s
fix tenant account unbind flow
2026-06-19 09:29:04 +08:00

343 lines
7.8 KiB
SQL

-- name: ListDesktopAccountsByClient :many
SELECT
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at
FROM platform_accounts
WHERE workspace_id = sqlc.arg(workspace_id)
AND client_id = sqlc.arg(client_id)
AND deleted_at IS NULL
ORDER BY platform_id, display_name, created_at DESC;
-- name: ListDesktopAccountsByUser :many
SELECT
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at
FROM platform_accounts
WHERE workspace_id = sqlc.arg(workspace_id)
AND user_id = sqlc.arg(user_id)
AND deleted_at IS NULL
ORDER BY platform_id, display_name, created_at DESC;
-- name: GetDesktopAccountByDesktopID :one
SELECT
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at
FROM platform_accounts
WHERE desktop_id = sqlc.arg(desktop_id)
AND workspace_id = sqlc.arg(workspace_id)
LIMIT 1;
-- name: GetDesktopAccountByIdentity :one
SELECT
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at
FROM platform_accounts
WHERE workspace_id = sqlc.arg(workspace_id)
AND client_id = sqlc.arg(client_id)
AND platform_id = sqlc.arg(platform_id)
AND platform_uid = sqlc.arg(platform_uid)
AND deleted_at IS NULL
LIMIT 1;
-- name: UpsertDesktopAccount :one
INSERT INTO platform_accounts (
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
nickname,
avatar_url,
status,
metadata_json,
last_check_at,
account_fingerprint,
display_name,
health,
verified_at,
tags,
sync_version
)
VALUES (
sqlc.arg(desktop_id),
sqlc.arg(tenant_id),
sqlc.arg(workspace_id),
sqlc.arg(user_id),
sqlc.arg(client_id),
sqlc.arg(platform_id),
sqlc.arg(platform_uid),
sqlc.arg(display_name)::text,
sqlc.narg(avatar_url),
sqlc.arg(legacy_status),
sqlc.narg(metadata_json),
sqlc.narg(verified_at),
sqlc.narg(account_fingerprint),
sqlc.arg(display_name)::text,
sqlc.arg(health),
sqlc.narg(verified_at),
sqlc.narg(tags),
1
)
ON CONFLICT (workspace_id, client_id, platform_id, platform_uid) WHERE deleted_at IS NULL
DO UPDATE SET
client_id = EXCLUDED.client_id,
user_id = EXCLUDED.user_id,
nickname = EXCLUDED.nickname,
avatar_url = COALESCE(EXCLUDED.avatar_url, platform_accounts.avatar_url),
status = EXCLUDED.status,
metadata_json = COALESCE(EXCLUDED.metadata_json, platform_accounts.metadata_json),
last_check_at = COALESCE(EXCLUDED.last_check_at, platform_accounts.last_check_at),
account_fingerprint = EXCLUDED.account_fingerprint,
display_name = EXCLUDED.display_name,
health = EXCLUDED.health,
verified_at = COALESCE(EXCLUDED.verified_at, platform_accounts.verified_at),
tags = EXCLUDED.tags,
sync_version = platform_accounts.sync_version + 1,
delete_requested_at = NULL,
updated_at = now()
WHERE platform_accounts.workspace_id = EXCLUDED.workspace_id
AND platform_accounts.client_id = EXCLUDED.client_id
AND (
sqlc.narg(if_sync_version)::bigint IS NULL
OR platform_accounts.sync_version = sqlc.narg(if_sync_version)::bigint
)
RETURNING
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at;
-- name: PatchDesktopAccount :one
UPDATE platform_accounts
SET display_name = COALESCE(sqlc.narg(display_name)::text, display_name),
nickname = COALESCE(sqlc.narg(display_name)::text, nickname),
health = COALESCE(sqlc.narg(health), health),
status = COALESCE(sqlc.narg(legacy_status), status),
verified_at = COALESCE(sqlc.narg(verified_at), verified_at),
last_check_at = COALESCE(sqlc.narg(verified_at), last_check_at),
tags = COALESCE(sqlc.narg(tags), tags),
sync_version = sync_version + 1,
updated_at = now()
WHERE desktop_id = sqlc.arg(desktop_id)
AND workspace_id = sqlc.arg(workspace_id)
AND client_id = sqlc.arg(client_id)
AND sync_version = sqlc.arg(if_sync_version)
AND deleted_at IS NULL
RETURNING
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at;
-- name: TombstoneDesktopAccount :one
UPDATE platform_accounts
SET deleted_at = now(),
sync_version = sync_version + 1,
updated_at = now()
WHERE desktop_id = sqlc.arg(desktop_id)
AND workspace_id = sqlc.arg(workspace_id)
AND client_id = sqlc.arg(client_id)
AND sync_version = sqlc.arg(if_sync_version)
AND deleted_at IS NULL
RETURNING
desktop_id,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at;
-- name: TombstoneDesktopAccountForActor :one
UPDATE platform_accounts
SET deleted_at = now(),
delete_requested_at = COALESCE(delete_requested_at, now()),
sync_version = sync_version + 1,
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,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at;
-- name: MarkDesktopAccountDeleteRequested :one
UPDATE platform_accounts
SET delete_requested_at = now(),
sync_version = sync_version + 1,
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,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at;
-- name: ClearDesktopAccountDeleteRequested :one
UPDATE platform_accounts
SET delete_requested_at = NULL,
sync_version = sync_version + 1,
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,
tenant_id,
workspace_id,
user_id,
client_id,
platform_id,
platform_uid,
account_fingerprint,
display_name,
avatar_url,
health,
verified_at,
tags,
sync_version,
deleted_at,
delete_requested_at,
created_at,
updated_at;