<?php require_once '/usr/local/phab/phabricator/scripts/__init_script__.php'; $phids = file_get_contents('php://stdin'); $phids = explode("\n", $phids); $phids = array_filter($phids); $diff_table = id(new DifferentialDiff())->getTableName(); $changeset_table = id(new DifferentialChangeset())->getTableName(); $property_table = id(new DifferentialDiffProperty())->getTableName(); $hunk_table = id(new DifferentialHunk())->getTableName(); $modern_table = id(new DifferentialHunkModern())->getTableName(); $conn = id(new DifferentialDiff())->establishConnection('w'); foreach ($phids as $phid) { $diff = id(new DifferentialDiff())->loadOneWhere( 'phid = %s', $phid); if (!$diff) { echo 'x'; continue; } $diff_id = $diff->getID(); queryfx( $conn, 'DELETE FROM %T WHERE diffID = %d', $property_table, $diff_id); $changesets = queryfx_all( $conn, 'SELECT id FROM %T WHERE diffID = %d', $changeset_table, $diff_id) $changeset_ids = ipull($changesets, 'id'); if ($changeset_ids) { queryfx( $conn, 'DELETE FROM %T WHERE changesetID IN (%Ld)', $hunk_table, $changeset_ids); queryfx( $conn, 'DELETE FROM %T WHERE changesetID IN (%Ld)', $modern_table, $changeset_ids); } quefyfx( $conn, 'DELETE FROM %T WHERE diffID = %d', $changeset_table, $diff_id); queryfx( $conn, 'DELETE FROM %T WHERE id = %d', $diff_table, $diff_id); echo '.'; }