Files
nekonest-cloud/db/relay-purge-proof.ts

69 lines
2.4 KiB
TypeScript

export function relayPurgeCompletionAuditId(purgeId: string): string {
return `audit_${purgeId.slice("purge_".length)}`;
}
export function relayPurgeRecordCanReturn(
state: string,
completedProofValid: boolean,
): boolean {
return state !== "completed" || completedProofValid;
}
export const COMPLETED_RELAY_PURGE_PROOF_SQL = `
SELECT EXISTS (
SELECT 1 FROM relay_purge_jobs AS jobs
INNER JOIN audit_events AS audits
ON audits.id = ?2
AND audits.actor_id = jobs.relay_node_id
AND audits.action = 'relay.purge.completed'
AND audits.target_type = 'relay_purge'
AND audits.target_id = jobs.id
AND json_extract(audits.after_json, '$.evidence_sha256') = jobs.evidence_sha256
WHERE jobs.id = ?1 AND jobs.state = 'completed'
AND jobs.evidence_sha256 = ?3
AND EXISTS (
SELECT 1 FROM tenant_authorization_state
WHERE tenant_id = jobs.tenant_id AND status = 'deleted'
)
AND EXISTS (
SELECT 1 FROM tenant_placements
WHERE tenant_id = jobs.tenant_id AND relay_node_id IS NULL
AND generation = jobs.placement_generation + 1 AND state = 'deleted'
)
AND EXISTS (
SELECT 1 FROM tenant_instances
WHERE id = jobs.tenant_id AND lifecycle = 'deleted'
AND desired_state = 'deleted' AND observed_state = 'deleted'
)
AND EXISTS (
SELECT 1 FROM account_deletion_requests
WHERE id = jobs.deletion_request_id AND status = 'relay_purged'
)
AND EXISTS (
SELECT 1 FROM accounts
WHERE id = (
SELECT account_id FROM account_deletion_requests
WHERE id = jobs.deletion_request_id
) AND status = 'relay_purged'
)
AND NOT EXISTS (
SELECT 1 FROM device_credentials
WHERE host_id IN (
SELECT hosts.id FROM hosts
INNER JOIN tenant_instances AS tenants ON tenants.account_id = hosts.account_id
WHERE tenants.id = jobs.tenant_id
)
)
AND NOT EXISTS (SELECT 1 FROM phone_route_handles WHERE tenant_id = jobs.tenant_id)
AND NOT EXISTS (SELECT 1 FROM relay_phone_principals WHERE tenant_id = jobs.tenant_id)
AND NOT EXISTS (SELECT 1 FROM phone_handoff_tickets WHERE tenant_id = jobs.tenant_id)
AND NOT EXISTS (
SELECT 1 FROM hosts
WHERE account_id = (
SELECT account_id FROM tenant_instances WHERE id = jobs.tenant_id
)
AND (COALESCE(lifecycle, '') != 'deactivated'
OR COALESCE(slot_state, '') != 'released')
)
) AS proof_valid`;