/* The "20150730.herald.5.sql" patch incorrectly swapped blocking and
   non-blocking "Add Reviewer" rules. This swaps back any rules which
   were last modified before the patch was applied. */

UPDATE {$NAMESPACE}_herald.herald_action a
  JOIN {$NAMESPACE}_herald.herald_rule r
  ON a.ruleID = r.id
  SET a.action = 'differential.reviewers.blocking.tmp'
  WHERE a.action = 'differential.reviewers.add'
  AND r.dateModified <=
    (SELECT applied FROM {$NAMESPACE}_meta_data.patch_status
      WHERE patch = 'phabricator:20150730.herald.5.sql');

UPDATE {$NAMESPACE}_herald.herald_action a
  JOIN {$NAMESPACE}_herald.herald_rule r
  ON a.ruleID = r.id
  SET a.action = 'differential.reviewers.add'
  WHERE a.action = 'differential.reviewers.blocking'
  AND r.dateModified <=
    (SELECT applied FROM {$NAMESPACE}_meta_data.patch_status
      WHERE patch = 'phabricator:20150730.herald.5.sql');

UPDATE {$NAMESPACE}_herald.herald_action a
  JOIN {$NAMESPACE}_herald.herald_rule r
  ON a.ruleID = r.id
  SET a.action = 'differential.reviewers.blocking'
  WHERE a.action = 'differential.reviewers.blocking.tmp';


UPDATE {$NAMESPACE}_herald.herald_action a
  JOIN {$NAMESPACE}_herald.herald_rule r
  ON a.ruleID = r.id
  SET a.action = 'differential.reviewers.self.blocking.tmp'
  WHERE a.action = 'differential.reviewers.self.add'
  AND r.dateModified <=
    (SELECT applied FROM {$NAMESPACE}_meta_data.patch_status
      WHERE patch = 'phabricator:20150730.herald.5.sql');

UPDATE {$NAMESPACE}_herald.herald_action a
  JOIN {$NAMESPACE}_herald.herald_rule r
  ON a.ruleID = r.id
  SET a.action = 'differential.reviewers.self.add'
  WHERE a.action = 'differential.reviewers.self.blocking'
  AND r.dateModified <=
    (SELECT applied FROM {$NAMESPACE}_meta_data.patch_status
      WHERE patch = 'phabricator:20150730.herald.5.sql');

UPDATE {$NAMESPACE}_herald.herald_action a
  JOIN {$NAMESPACE}_herald.herald_rule r
  ON a.ruleID = r.id
  SET a.action = 'differential.reviewers.self.blocking'
  WHERE a.action = 'differential.reviewers.self.blocking.tmp';

Correct a bad Herald migration
Correct a bad Herald migration

Summary:
One of the migrations in rPa335004a91 (`20150730.herald.5.sql`) incorrectly swapped "add" and "add blocking" Differential Herald rules.

Swap any rules last modified before this patch was applied back. This is the best we can do without possibly overwriting more recent, intentional data. I'll issue some guidance on this in the changelog.

Test Plan:
  - Made a rule, ran patch, no change.
  - Changed rule modified time to a few months ago, ran patch, saw swap from non-blocking to blocking.

Reviewers: chad

Reviewed By: chad

Differential Revision: https://secure.phabricator.com/D14061
