<?php

declare(strict_types=1);

/*
 * Chill is a software for social workers
 *
 * For the full copyright and license information, please view
 * the LICENSE file that was distributed with this source code.
 */

namespace Chill\Migrations\Main;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Version20260223134919 extends AbstractMigration
{
    public function getDescription(): string
    {
        return 'Create a partial index for postal_code search_name_code, to avoid deleted records';
    }

    public function up(Schema $schema): void
    {
        $this->addSql('DROP INDEX public.search_name_code');
        $this->addSql('CREATE INDEX search_name_code ON public.chill_main_postal_code USING GIN (LOWER(code) gin_trgm_ops, LOWER(label) gin_trgm_ops) WHERE deletedAt IS NULL');
        $this->addSql('DROP INDEX public.chill_internal_postal_code_canonicalized');
        $this->addSql('CREATE INDEX chill_internal_postal_code_canonicalized ON chill_main_postal_code USING GIST (canonical gist_trgm_ops) WHERE origin = 0 AND deletedAt IS NULL');

    }

    public function down(Schema $schema): void
    {
        $this->addSql('DROP INDEX public.search_name_code');
        $this->addSql('CREATE INDEX search_name_code ON chill_main_postal_code USING GIN (LOWER(code) gin_trgm_ops, LOWER(label) gin_trgm_ops)');

        $this->addSql('DROP INDEX public.chill_internal_postal_code_canonicalized');
        $this->addSql('CREATE INDEX chill_internal_postal_code_canonicalized ON chill_main_postal_code USING GIST (canonical gist_trgm_ops) WHERE origin = 0');
    }
}
