-- shortcut_tokens: long-lived, scope-limited, revocable HS256 tokens for the -- iOS Shortcut clipboard sync. Count backs the per-user cap; Revoke is scoped by -- user_id to block cross-user revocation; Touch records last use asynchronously. -- name: InsertShortcutToken :exec INSERT INTO shortcut_tokens (jti, user_id, label, scopes, created_at, expires_at) VALUES (?, ?, ?, ?, ?, ?); -- name: GetShortcutToken :one SELECT jti, user_id, label, scopes, created_at, expires_at, last_used_at, revoked FROM shortcut_tokens WHERE jti = ?; -- name: ListShortcutTokensByUser :many SELECT jti, user_id, label, scopes, created_at, expires_at, last_used_at, revoked FROM shortcut_tokens WHERE user_id = ? ORDER BY created_at DESC; -- name: CountActiveShortcutTokensByUser :one SELECT COUNT(*) FROM shortcut_tokens WHERE user_id = ? AND revoked = 0 AND expires_at > ?; -- name: RevokeShortcutToken :execrows UPDATE shortcut_tokens SET revoked = 1 WHERE jti = ? AND user_id = ?; -- name: TouchShortcutTokenUsed :exec UPDATE shortcut_tokens SET last_used_at = ? WHERE jti = ?;