diff --git a/docs/specs/validator-api.yml b/docs/specs/validator-api.yml index 5093139..41aa499 100644 --- a/docs/specs/validator-api.yml +++ b/docs/specs/validator-api.yml @@ -6,7 +6,7 @@ info: contact: name: IGNF/validator url: "https://github.com/IGNF/validator/issues" - version: "0.5.3" + version: "0.5.5" title: "API Validator" license: name: "AGPL-3.0-or-later" diff --git a/src/Repository/ValidationRepository.php b/src/Repository/ValidationRepository.php index 03a866a..1522132 100755 --- a/src/Repository/ValidationRepository.php +++ b/src/Repository/ValidationRepository.php @@ -73,4 +73,17 @@ public function findAllToBeArchived(DateTime $expiryDate) ->getResult() ; } + + /** + * Drop schema corresponding to input validation + * + * @param Validation $validation + * @return boolean + */ + public function dropSchema(Validation $validation) + { + $sql = sprintf('DROP SCHEMA IF EXISTS "validation%s" CASCADE', $validation->getUid()); + $reponse = $this->getEntityManager()->getConnection()->executeQuery($sql); + return $reponse->rowCount() != 0; + } } diff --git a/src/Validation/ValidationManager.php b/src/Validation/ValidationManager.php index 4ac5951..5492c77 100644 --- a/src/Validation/ValidationManager.php +++ b/src/Validation/ValidationManager.php @@ -4,6 +4,7 @@ use App\Entity\Validation; use App\Exception\ZipArchiveValidationException; +use App\Repository\ValidationRepository; use App\Storage\ValidationsStorage; use Doctrine\ORM\EntityManagerInterface; use Psr\Log\LoggerInterface; @@ -40,6 +41,11 @@ class ValidationManager */ private $zipArchiveValidator; + /** + * @var ValidationRepository + */ + private $validationRepository; + /** * Current validation (in order to handle SIGTERM) * @var Validation @@ -51,13 +57,15 @@ public function __construct( ValidationsStorage $storage, ValidatorCLI $validatorCli, ZipArchiveValidator $zipArchiveValidator, - LoggerInterface $logger + LoggerInterface $logger, + ValidationRepository $validationRepository ) { $this->em = $em; $this->storage = $storage; $this->validatorCli = $validatorCli; $this->zipArchiveValidator = $zipArchiveValidator; $this->logger = $logger; + $this->validationRepository = $validationRepository; } /** @@ -96,6 +104,10 @@ public function archive(Validation $validation) if ($this->storage->getStorage()->directoryExists($outputDirectory)) { $this->storage->getStorage()->deleteDirectory($outputDirectory); } + $this->logger->info('Validation[{uid}] : drop validation schema', [ + 'uid' => $validation->getUid(), + ]); + $this->validationRepository->dropSchema($validation); $this->logger->info('Validation[{uid}] : archive removing all files : completed', [ 'uid' => $validation->getUid(), 'status' => Validation::STATUS_ARCHIVED,