Olivier Massot преди 3 години
родител
ревизия
7995c5f1ec
променени са 1 файла, в които са добавени 0 реда и са изтрити 149 реда
  1. 0 149
      src/Commands/TestCommand.php

+ 0 - 149
src/Commands/TestCommand.php

@@ -1,149 +0,0 @@
-<?php
-
-namespace App\Commands\PostUpgrade\V0_2;
-
-use PDO;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Console\Attribute\AsCommand;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-#[AsCommand(
-    name: 'ot:upgrade:0.2',
-    description: 'Execute the post-upgrade scripts for Ap2i v0.2'
-)]
-class PostUpgradeCommand extends Command
-{
-    public const TARGETED_VERSION = "0.2";
-
-    public function __construct(private LoggerInterface $logger) {
-        parent::__construct();
-    }
-
-    protected function configure(): void
-    {}
-
-    /**
-     * @throws \Exception
-     */
-    protected function execute(InputInterface $input, OutputInterface $output): int
-    {
-        $this->logger->info('Run post-upgrade scripts for version ' . self::TARGETED_VERSION);
-
-        $this->populateSubdomains();
-
-        $output->writeln("Post-upgrade operations successfully executed");
-        return Command::SUCCESS;
-    }
-
-    /**
-     * Populate the new Subdomain table
-     * @throws \Exception
-     */
-    public function populateSubdomains() {
-
-        $dbUrl = $_ENV['DATABASE_URL'];
-        $matches = [];
-        preg_match(
-            "/^mysql:\/\/(\w+):([^\s@]+)@([\w\-]+):(\d+)\/(\w+)/",
-            $dbUrl,
-            $matches
-        );
-        [$dbUser, $dbPwd, $dbHost, $dbPort, $dbName] = array_slice($matches, 1);
-
-        $opentalentCnn = new PDO(
-            "mysql:host=" . $dbHost . ";dbname=" . $dbName,
-            $dbUser,
-            $dbPwd,
-            array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
-        $opentalentCnn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-
-        $opentalentCnn->beginTransaction();
-
-        $openassosCnn = new PDO(
-            "mysql:host=prod-front;dbname=openassos",
-            'dbcloner',
-            'wWZ4hYcrmHLW2mUK',
-            array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
-
-        try {
-            $stmt = $opentalentCnn->query("select count(*) from opentalent.Subdomain;");
-            if ($stmt->fetchColumn(0)[0] > 0) {
-                throw new \RuntimeException('Subdomain table is not empty');
-            }
-
-            $this->logger->info('Populate with reserved subdomains');
-            $reservedSubdomains = [
-                'app', 'my', 'api', 'ap2i', 'assistance', 'local', 'ressources', 'logs', 'stats', 'support', 'preprod',
-                'test', 'admin', 'statistiques', 'drive', 'cloud', 'git', 'frames', 'v6', 'v59', 'www', 'myadmin'
-            ];
-            foreach ($reservedSubdomains as $reserved) {
-                $sql = "insert into opentalent.Subdomain (organization_id, subdomain, active)
-                    values (13, '" . $reserved . "', 0);";
-                $opentalentCnn->query($sql);
-            }
-
-            $this->logger->info('Populate Subdomain table from openassos.sys_domain');
-
-            $sql = "SELECT d.pid, REGEXP_REPLACE(d.domainName, '^(.+)\\\\.opentalent\\\\.fr$', '\\\\1')
-                    FROM openassos.sys_domain d
-                    where d.domainName like '%.opentalent.fr';";
-            $statement = $openassosCnn->query($sql);
-
-            foreach ($statement->fetchAll() as $row) {
-                [$cmsId, $subdomain] = $row;
-                if (!empty($subdomain) and is_numeric($cmsId)) {
-                    $sql = "INSERT INTO opentalent.Subdomain (organization_id, subdomain)
-                        SELECT o.id, '" . $subdomain . "'
-                        from opentalent.Organization o 
-                        where o.cmsId = " . $cmsId . ";";
-                    $opentalentCnn->query($sql);
-                }
-            }
-
-            $sql = "delete
-                    from opentalent.Subdomain
-                    where subdomain REGEXP '^(.*)\\\\.(.*)$'
-                    and REGEXP_REPLACE(subdomain, '\\\\.', '-') in (select subdomain from opentalent.Subdomain);";
-            $opentalentCnn->query($sql);
-
-            $sql = "update opentalent.Subdomain
-                    set subdomain = REGEXP_REPLACE(subdomain, '\\\\.', '-')
-                    where subdomain REGEXP '^(.*)\\\\.(.*)$';";
-            $opentalentCnn->query($sql);
-
-            $this->logger->info('Complete with subdomains from Parameters table');
-            $sql = "insert into opentalent.Subdomain (organization_id, subdomain)
-                    select distinct o.id, p.subDomain
-                    from opentalent.Parameters p
-                    inner join opentalent.Organization o on o.parameters_id = p.id
-                    left join opentalent.Subdomain s on s.organization_id = o.id
-                    where p.subDomain is not null and not p.subDomain in (select subdomain from opentalent.Subdomain);";
-            $opentalentCnn->query($sql);
-
-            $this->logger->info('Set the current subdomains');
-            $sql = "update opentalent.Subdomain s set s.active = false;";
-            $opentalentCnn->query($sql);
-
-            $sql = "update opentalent.Subdomain s
-                    inner join opentalent.Organization o on o.id = s.organization_id
-                    inner join opentalent.Parameters p on p.id = o.parameters_id and s.subdomain = p.subDomain
-                    set s.active = true;";
-            $opentalentCnn->query($sql);
-
-            $this->logger->info('Set the custom domains');
-            $sql = "update opentalent.Parameters
-                    set customDomain = otherWebsite
-                    where otherWebsite not like '%.opentalent.fr'";
-            $opentalentCnn->query($sql);
-
-            $opentalentCnn->commit();
-            $this->logger->info('Subdomain table was successfully populated');
-        } catch (\Exception $e) {
-            $opentalentCnn->rollBack();
-            $this->logger->critical('Error while running the post-upgrade script, abort and rollback');
-            throw $e;
-        }
-    }
-}