mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-19 05:12:41 +01:00
Implement DestructibleInterface on GitLFS refs
Summary: Ref T7789. Make sure these get cleaned up when a repository is destroyed. Test Plan: - Created a new repository. - Pushed some LFS data to it. - Used `bin/remove destroy` to nuke it. - Verified the LFS stuff was cleaned up and the underlying files were destroyed (`SELECT * FROM repository_gitlfsref`, etc). Reviewers: chad Reviewed By: chad Maniphest Tasks: T7789 Differential Revision: https://secure.phabricator.com/D15493
This commit is contained in:
parent
a24f001b08
commit
78e36d6b17
3 changed files with 31 additions and 1 deletions
|
@ -7672,6 +7672,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorRepositoryGitLFSRef' => array(
|
'PhabricatorRepositoryGitLFSRef' => array(
|
||||||
'PhabricatorRepositoryDAO',
|
'PhabricatorRepositoryDAO',
|
||||||
'PhabricatorPolicyInterface',
|
'PhabricatorPolicyInterface',
|
||||||
|
'PhabricatorDestructibleInterface',
|
||||||
),
|
),
|
||||||
'PhabricatorRepositoryGitLFSRefQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorRepositoryGitLFSRefQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'PhabricatorRepositoryGraphCache' => 'Phobject',
|
'PhabricatorRepositoryGraphCache' => 'Phobject',
|
||||||
|
|
|
@ -2435,6 +2435,14 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
|
||||||
$engine->destroyObject($atom);
|
$engine->destroyObject($atom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$lfs_refs = id(new PhabricatorRepositoryGitLFSRefQuery())
|
||||||
|
->setViewer($engine->getViewer())
|
||||||
|
->withRepositoryPHIDs(array($phid))
|
||||||
|
->execute();
|
||||||
|
foreach ($lfs_refs as $ref) {
|
||||||
|
$engine->destroyObject($ref);
|
||||||
|
}
|
||||||
|
|
||||||
$this->saveTransaction();
|
$this->saveTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
final class PhabricatorRepositoryGitLFSRef
|
final class PhabricatorRepositoryGitLFSRef
|
||||||
extends PhabricatorRepositoryDAO
|
extends PhabricatorRepositoryDAO
|
||||||
implements PhabricatorPolicyInterface {
|
implements
|
||||||
|
PhabricatorPolicyInterface,
|
||||||
|
PhabricatorDestructibleInterface {
|
||||||
|
|
||||||
protected $repositoryPHID;
|
protected $repositoryPHID;
|
||||||
protected $objectHash;
|
protected $objectHash;
|
||||||
|
@ -48,4 +50,23 @@ final class PhabricatorRepositoryGitLFSRef
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* -( PhabricatorDestructibleInterface )----------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
public function destroyObjectPermanently(
|
||||||
|
PhabricatorDestructionEngine $engine) {
|
||||||
|
|
||||||
|
$file_phid = $this->getFilePHID();
|
||||||
|
|
||||||
|
$file = id(new PhabricatorFileQuery())
|
||||||
|
->setViewer($engine->getViewer())
|
||||||
|
->withPHIDs(array($file_phid))
|
||||||
|
->executeOne();
|
||||||
|
if ($file) {
|
||||||
|
$engine->destroyObject($file);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->delete();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue